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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闫玉泉 黑马帝   /  2012-2-27 22:45  /  1541 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 闫玉泉 于 2012-2-28 01:16 编辑

“这个String类提供了数值不可改变的字符串。” 这句话什么意思? String对象一但赋值就不能改变了吗? 我自己写了一个程序可以改变啊! 求解释!

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

2 个回复

倒序浏览
在Java中使用字符串有一个非常重要的规则必须记得,一个字符串对象一旦被配置,它的内容就是固定不可变的。例如下面这个声明:
String str = "caterpillar";
这个声明会配置一个长度为11、内容为caterpillar的字符串对象,您无法改变这个字符串对象的内容。不要以为下面的语句就是改变一个字符串对象的内容:
String str = "Just";
str = "Justin";
事实上在这个程序片段中会有两个字符串对象,一个是Just字符串对象,长度为4;一个是Justin字符串对象,长度为6,两个是不同的字符串对象。您并不是在Just字符串后加上in字符串,而是让str名称引用自Justin字符串对象

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
String str = "abc";
str = new String("hehe");
当执行到第一句代码时,内存中产生了一个字符串对象 "abc",并将其引用赋给str。
当执行到第二句代码时,内存中又产生了一个字符串对象 "hehe",并将其引用赋给了str。
所以改变的只是引用而已,而并没有改变字符串 "abc"的内容,内存中产生了两个字符串对象。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马