返回信息流如何理解Java 的字符串String对象是不可变的?
这是一条镜像帖。来源:北邮人论坛 / java / #36763同步于 2014/12/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
如何理解Java 的字符串是不可变的?
studychina
2014/12/4镜像同步24 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
这个说得不错: http://stackoverflow.com/questions/1552301/immutability-of-strings-in-java
我觉得维基百科说得更好: http://en.wikipedia.org/wiki/Immutable_object#Java
【 在 nuanyangyang 的大作中提到: 】
: 这个说得不错: http://stackoverflow.com/questions/1552301/immutability-of-strings-in-java
: 我觉得维基百科说得更好: http://en.wikipedia.org/wiki/Immutable_o
表示没看太懂啊
我觉得应该是所有的字符串都是存放在string pool中,所有相同字符串的不同String对象都指向string pool中同一个字符串。所以如果字符串可以被修改,那就会影响到所有指向这个字符串的String对象。所以所有对字符串的修改其实都是新生成(或者返回)一个新的字符串
String的class定义为public final class String implements java.io.Serializable, Comparable<String>, CharSequence
话说
String s = "fox";
String t = "fo" + "x"
指向的也是一个区域吗?
【 在 uriel (D-uriel|人生八苦之死也吃不饱~~) 的大作中提到: 】
: 我觉得应该是所有的字符串都是存放在string pool中,所有相同字符串的不同String对象都指向string pool中同一个字符串。所以如果字符串可以被修改,那就会影响到所有指向这个字符串的String对象。所以所有对字符串的修改其实都是新生成(或者返回)一个新的字符串