java,String的值问题?

来源:百度知道 编辑:UC知道 时间:2024/06/22 14:56:07
String内的值不是不可以改变吗?
比如,String s="你好";
那s="很好";
System.out.println(s);为什么输出的是:很好,而不是你好。
思路:
那个串在内存中是固定的
你好就总是你好
s被赋值为很好,只不过是s指向了很好这个位置
原来的你好没有改变。

确实不可以改变,不可改变的是串的值,意思是"你好"这个字符串在内存中不可以改变,s其实是一个指针,开始指向"你好",当你重新赋值后,又指向"很好",只是s指向了不同的数据,原来的串没有改变

s你想做是一个快捷方式,“你好”是一个程序,“很好”也是一个程序
开始的时候s与“你好”是关联的
后来你把它与“很好”关联起来了
而“你好”还在原先那个地方一点也没改变

String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象.这样的话把String类的引用传递给一个方法,改方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似.