浏览 1846 次
锁定老帖子 主题:String 对象是可变的-证明2
精华帖 (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); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-01-13
通过特殊手段修改String的值能表明String是mutable的吗?很奇怪的想法。
|
|
返回顶楼 | |
发表时间:2013-01-13
dohkoos 写道 通过特殊手段修改String的值能表明String是mutable的吗?很奇怪的想法。
结果是不是正确的? |
|
返回顶楼 | |
发表时间:2013-01-14
"5"=="1" => true。但这不能证明String对象是mutable的,你的这种方法绕过了String对象的实现机制。就相当于用内存修改工具修改内存中的数据后,说String对象是可变的,这不是很奇怪的想法吗?
|
|
返回顶楼 | |
发表时间:2013-01-14
dohkoos 写道 "5"=="1" => true。但这不能证明String对象是mutable的,你的这种方法绕过了String对象的实现机制。就相当于用内存修改工具修改内存中的数据后,说String对象是可变的,这不是很奇怪的想法吗?
那String对象的值是可以改变的吧! |
|
返回顶楼 | |