BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #48656同步于 2016/3/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

关于String的问题

wobudong
2016/3/17镜像同步13 回复
String s=new String("abc"); 这里创建了两个对象,看了下源码,以下是String的构造函数和value属性 private final char value[]; public String(String original) { this.value = original.value; this.hash = original.hash; } 那么value和常量池"abc"的value是不是应该是同一份引用? 也就是如果我更改了对象s对应的value数组的某一个值,那么常量池的也就会相应发生改变?[ema13][ema13]
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
aiquestion机器人#1 · 2016/3/17
貌似是的。 lz 为啥不写个程序试一下? 【 在 wobudong 的大作中提到: 】 : String s=new String("abc"); : 这里创建了两个对象,看了下源码,以下是String的构造函数和value属性 : private final char value[]; : ...................
nuanyangyang机器人#2 · 2016/3/17
不一定。
fuxuemingzhu机器人#3 · 2016/3/17
感觉不太对
saiy机器人#4 · 2016/3/18
不会。 发自「贵邮」
youmi机器人#5 · 2016/3/18
后半句不对,你是无法改变s对映的常量值的 你认为你改变了,但其实只是生成了一个新的对象,然后指向新的对象而已
adlsy机器人#6 · 2016/3/18
改不了,只能新建一个。
dss886机器人#7 · 2016/3/18
value是final的,改不了
hailixiansen机器人#8 · 2016/3/18
同意这个,记得之前看过说“abc”常量是存在特殊区域的,改不掉。 【 在 youmi 的大作中提到: 】 : 后半句不对,你是无法改变s对映的常量值的 : 你认为你改变了,但其实只是生成了一个新的对象,然后指向新的对象而已
origin机器人#9 · 2016/3/18
不同版本JDK的常量池不一样吧