黑马程序员技术交流社区

标题: 关于String类型和String[]数组的问题? [打印本页]

作者: 张慈瑞    时间: 2014-7-13 15:30
标题: 关于String类型和String[]数组的问题?
String类型的对象一旦被创建之后就不能再改变,那么String类型的数组能不能被改变那,为什么?
这是我在书中看到的一个问题,有没有人帮我解释一下。
作者: 签发    时间: 2014-7-13 15:36
原因在于String对象的成员是final修饰的
作者: e644638045    时间: 2014-7-13 15:37
这个有电困难,不明白》》》
作者: wisely    时间: 2014-7-13 18:30
签发 发表于 2014-7-13 15:36
原因在于String对象的成员是final修饰的

长知识了,看了下API才发现真的是这样。


关于楼主的问题。
举例说明。
String str="abc";
abc是字符串,str只是接受了abc的内存地址。如果将另一个字符串的内存地址传给str,那么打印str的话,就不再是abc。字符串常量abc仍旧存在。
数组也是一个意思。

str只是内存地址而已。
PS:这里面涉及常量池的知识,看过很多,多少也理解了一点,但不明白原理,只好不求甚解。如果楼主感兴趣,可以直接百度:常量池
作者: 张慈瑞    时间: 2014-7-13 22:18
wisely 发表于 2014-7-13 18:30
长知识了,看了下API才发现真的是这样。

StringBuffer也是final修饰的。

作者: J.twt    时间: 2014-7-13 22:23
还没看到字符串呢,学习学习
作者: doubandddk    时间: 2014-7-13 23:49
String str = "abc";
不能改变是说“abc”不能改变
str可以指向任意其他的字符串;
String[] 也一样
作者: wisely    时间: 2014-7-15 16:06
张慈瑞 发表于 2014-7-13 22:18
StringBuffer也是final修饰的。

我之前的理解可能不太对。

String和StringBuffer都是class,它们之前有final不是不能改变,而是不能继承。




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