黑马程序员技术交流社区

标题: String类的应用,这个问题搞不明白。 [打印本页]

作者: storer    时间: 2015-6-9 23:35
标题: String类的应用,这个问题搞不明白。
String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?


作者: zhenxing133    时间: 2015-6-9 23:46
我也没懂
作者: 人在旅途~东营    时间: 2015-6-9 23:57
没变吧?不是在常量池中么? String一旦创建就不会发生改变的啊,
作者: 灰色水晶梦    时间: 2015-6-10 00:02
没有只要以改变就会重新判断有没有符合的没有就重新开辟空间原来的还在那只是S的引用变了。
作者: 396460221    时间: 2015-6-10 00:05
String 类是final类是,一旦创建对象,这个对象的内容是不能改变的。但引用是可以变的。如你的问题中,第一个对象是Hello,第二个对象是Hello world;这两个对象中的内容是不会改变的。第一次s的引用指向hello,第二次后s的引用指向hello world
作者: msxhm    时间: 2015-6-10 00:07
没有吧。
作者: java8023    时间: 2015-6-10 00:32
只是s的引用的指向地址发生变化而已,原始字符窜还是有的。不明的白的参看我的帖子
作者: kuangzeyu    时间: 2015-6-10 00:45
变了的,又没有重新建立新对象。最后变成了Helloworld!
作者: qian0217wei    时间: 2015-6-10 00:47
String一旦初始化就不会被改变,被改变只是s对象的引用发生了变化!
作者: 翟超杰    时间: 2015-6-10 01:00
这种情况需要分开看,你只需要知道赋值后值不能变,引用可以变。具体到这个s他的引用变了指向常量池中的“helloworld”
作者: jjyy1008    时间: 2015-6-10 01:06
原来的没有变,只是在内存中创建了一个新的对象"Hello World",并指向s的引用
作者: zheng72566    时间: 2015-6-10 07:38
没有变,
作者: 麦兜是个猪    时间: 2015-6-10 08:45
不会变的,你这么写只是说s这个引用指向了后面那一个对象
作者: LovelySon_YM    时间: 2015-6-10 09:37
论坛真心不错,学习了!
作者: jife94    时间: 2015-6-10 09:51
画个图就知道了啊,s指向的地址原内容没变,但是s指向的地址变了
作者: micro_hx    时间: 2015-6-10 14:52
我真心告诉你,真的没变。。。
作者: 我的最优解    时间: 2015-6-10 17:48
当然变了,只是把原来的删除了,重新生成一个对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2