A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?

16 个回复

倒序浏览
我也没懂
回复 使用道具 举报
没变吧?不是在常量池中么? String一旦创建就不会发生改变的啊,
回复 使用道具 举报
没有只要以改变就会重新判断有没有符合的没有就重新开辟空间原来的还在那只是S的引用变了。
回复 使用道具 举报
String 类是final类是,一旦创建对象,这个对象的内容是不能改变的。但引用是可以变的。如你的问题中,第一个对象是Hello,第二个对象是Hello world;这两个对象中的内容是不会改变的。第一次s的引用指向hello,第二次后s的引用指向hello world
回复 使用道具 举报
没有吧。
回复 使用道具 举报
只是s的引用的指向地址发生变化而已,原始字符窜还是有的。不明的白的参看我的帖子
回复 使用道具 举报
变了的,又没有重新建立新对象。最后变成了Helloworld!
回复 使用道具 举报
String一旦初始化就不会被改变,被改变只是s对象的引用发生了变化!
回复 使用道具 举报
翟超杰 来自手机 中级黑马 2015-6-10 01:00:53
10#
这种情况需要分开看,你只需要知道赋值后值不能变,引用可以变。具体到这个s他的引用变了指向常量池中的“helloworld”来自: iPhone客户端
回复 使用道具 举报
原来的没有变,只是在内存中创建了一个新的对象"Hello World",并指向s的引用
回复 使用道具 举报
没有变,
回复 使用道具 举报
不会变的,你这么写只是说s这个引用指向了后面那一个对象
回复 使用道具 举报
论坛真心不错,学习了!
回复 使用道具 举报
画个图就知道了啊,s指向的地址原内容没变,但是s指向的地址变了
回复 使用道具 举报
我真心告诉你,真的没变。。。
回复 使用道具 举报
当然变了,只是把原来的删除了,重新生成一个对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马