论坛首页 编程语言技术论坛

String 对象是可变的-证明2

浏览 1846 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-01-13  

public class StringTest {

	public static void main(String[] args)throws Exception {
		//String s = "1";
		//String s2 = "5";
		//String s2 = "2";
		//String s12 = "12";
		//String s22=s+s2;
		String s2 = "1";
		System.out.println("没改前的值=="+s2);
		System.out.println(s2=="1");
		c(s2);
		System.out.println("改了后的值=="+s2);
		System.out.println(s2=="1");
		
		//System.out.println(s12.equals(s22));
		//System.out.println(s.hashCode());
		//System.out.println(s2.hashCode());
		//System.out.println(s.equals(s2));
		//System.out.println(s2==s);
		
	}
	public static void c(String s)throws Exception{
		Field f = s.getClass().getDeclaredField("value");
		f.setAccessible(true);
		Object o = f.get(s);
		char[] c = (char[]) o;
		//System.out.println(o);
		f.set(s, "5".toCharArray());
		Object o2 = f.get(s);
		//System.out.println(o2);
	}
}
 
   发表时间:2013-01-13  
通过特殊手段修改String的值能表明String是mutable的吗?很奇怪的想法。
0 请登录后投票
   发表时间:2013-01-13  
dohkoos 写道
通过特殊手段修改String的值能表明String是mutable的吗?很奇怪的想法。

结果是不是正确的?
0 请登录后投票
   发表时间:2013-01-14  
"5"=="1" => true。但这不能证明String对象是mutable的,你的这种方法绕过了String对象的实现机制。就相当于用内存修改工具修改内存中的数据后,说String对象是可变的,这不是很奇怪的想法吗?
0 请登录后投票
   发表时间:2013-01-14  
dohkoos 写道
"5"=="1" => true。但这不能证明String对象是mutable的,你的这种方法绕过了String对象的实现机制。就相当于用内存修改工具修改内存中的数据后,说String对象是可变的,这不是很奇怪的想法吗?


那String对象的值是可以改变的吧!
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics