String a ="100"; 创建了一个对象 100, a的引用(地址) 指向了 "100"这个地址。
String b =a; b的地址等于 a的地址。
b的 引用(地址) 指向了 "100"这个地址。
b = "50" ; 这个50是个新建的对象
也就是 b的 引用(地址) 指向了 50这个对象的地址。
然而 a 引用还是指向原来 100的 那个地址。所以值不变。
下边那个打印出来的值都是20.
String是特殊的类 这个特殊就特殊在String的对象都是唯一的
刚接触String的时候一定会接触这样的题
String s = “a”+“b”+“c”;、
问你一共创建了几个String 对象
其实上边的题一共有 a b c ab abc 5个String对象被创建出来 如果不能理解String对象都是唯一的这么一说的话那答案就会是4个a b c abc
你上边的问题 当b=“50”的时候 b已经不再是“100”这个对象的引用了 而是一个新的对象“50”
的引用所以打印出来的就是100
.不知道你明白不明白。反正最重要的就是理解String对象是唯一的这句话
String是不可变类,也就是说赋值之后值是不能变的,修改值的话都是通过在内存中新建一个String然后把修改后的值复制过去。
String类型不能修改,是因为String存在于heap区,是一个常量
迅风123 正解