黑马程序员技术交流社区
标题:
String类
[打印本页]
作者:
\(^o^)/
时间:
2014-6-21 22:08
标题:
String类
本帖最后由 \(^o^)/ 于 2014-6-23 21:27 编辑
String str="sdf";
str="s";
System.out.println(str);
不是说字符串一被初始化赋值就不能改变,为什么打印出来的是s
作者:
z-翔
时间:
2014-6-21 22:26
字符串并没有变
而是str的指向变了
指向了s这个字符串
而sdf还是那个sdf
这让我想起了一首诗《见或不见》...
作者:
江夷
时间:
2014-6-21 22:27
这里说的是字符串对象,"sdf"这个字符串对象赋值后就不会再改变,而str =“s”,则将引用类型str指向了“s”的角标值
作者:
帅哥哥
时间:
2014-6-22 16:55
“sdf”和“s”都在常量池里边,str在栈中,可以指向不同的字符串常量
作者:
杨殿生
时间:
2014-6-22 19:03
str的引用改变了 他指向了s所以打印的是s
作者:
波涛
时间:
2014-6-22 19:52
是的,字符串sdf还是sdf没有变,只是不被str所指了,str去指向了另外的字串s
作者:
踏雪风暴
时间:
2014-6-22 19:58
字符串一被初始化赋值就不能改变,是这样的,但问题不是这个
String str="sdf";
[img]str="s";
System.out.println(str);
由于String的特点,"sdf"和"s"是两个对象,可以理解为堆内存中两个不同地址的对象,而栈内存的str 先是指向"sdf"。后来由 str="s"; 指向了"s"
无标题.png
(36.32 KB, 下载次数: 33)
下载附件
2014-6-22 19:57 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2