黑马程序员技术交流社区
标题:
string 的一个小问题
[打印本页]
作者:
风色月下
时间:
2016-4-26 22:09
标题:
string 的一个小问题
String s= "abc" s="bcd" 是不是字符串被更改
作者:
yunmu
时间:
2016-4-26 22:16
不是字符串被改了,字符串是无法再改变的。是引用指向被改了。
作者:
ruijin
时间:
2016-4-26 22:32
是的,对的!懂
作者:
320215787
时间:
2016-4-26 22:36
不是 指引变了
作者:
钱金磊
时间:
2016-4-26 23:48
你用hashcode()这个方法检验下!我试过,是内存地址变了!
作者:
huaihkiss
时间:
2016-4-26 23:59
字符串作为一个对象 实际上语句是这样的
String s =“abc”; //由于基本数据类型是一个基本数据类型特殊包装类存在 拥有着自动装箱的特性 他的代码完整是这样的 String s=new String("abc"); 除了stringbuffer stringbuilder不是以外 字符串变量所引用的对象都是一个新的字符串 只是自动装箱了 少写了上部分代码 new的就是在堆内存中 新建一个空间 内容为abc 将地址返回给s进行引用
s=“bcd”;//所以呢 这一段是s=new String("bcd"); 所以呢 这段是新建的
作者:
yxpzzl
时间:
2016-4-27 00:45
字符串是常量,无法再改变的。是引用指向s被改了。
作者:
长衫造纸农_
时间:
2016-4-27 08:36
final类不能被改变,引用变了而已
作者:
zhoutianxing
时间:
2016-4-27 20:59
首先创建了一个对象S,然后再常量池里面创建了一个abc,然后S指向了这个abc的地址。
然后又在常量池里面创建了一个bcd,然后S又指向了bcd的地址。
现在常量池里面有2个常量 abc 和 bcd ,所以只是s指向了其他的地址,而具体的字符串没有改变,而是重新创建了一个
作者:
feijiaqi
时间:
2016-4-27 21:16
不能改变
作者:
奉建兵
时间:
2016-4-27 22:32
不是,字符串是引用类型,是对象存在于堆内存,你这种情况是把s这个引用指向了"bcd"这个对象,但是"abc"这个对象还是存在于堆内存的,只是没有引用去引用它了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2