class A
{......}A p1=new A(); A p2=new A().
p1=p2;
个人理解是,p1和p2对应于同一个内存地址,只不过此地址分别对应两个名字p1p2,地址内容是一样的.
我想问的问题是,为什么关于字符串的就不是这样的.例如,
String a="kkkkk";
String b=a;
b="jjjj";
为什么这时改变b的值,但a不发生变化呢?难道b=a,不是对字符串的引用吗?
{......}A p1=new A(); A p2=new A().
p1=p2;
个人理解是,p1和p2对应于同一个内存地址,只不过此地址分别对应两个名字p1p2,地址内容是一样的.
我想问的问题是,为什么关于字符串的就不是这样的.例如,
String a="kkkkk";
String b=a;
b="jjjj";
为什么这时改变b的值,但a不发生变化呢?难道b=a,不是对字符串的引用吗?
解决方案 »
- java Swing 设置背景图片 高手看看我哪里错了? 谢谢
- SplitPane的左边放了一个Panel,panel上有一些大小一样控件,想这些控件紧凑排列,应该用哪种Layout
- JList焦点问题,请大家随便谈谈看法
- java 中如何获取系统时间呀
- 日期型的数据如何相减,计算出相差的天数是多少?
- 程序不能运行,请各位帮忙看看.
- 怎样在TextArea中显示多种颜色的文本?
- 同步锁的问题:请问子类中调用父类方法时锁对象是谁?为什么
- 立刻就给100分关于select数据后在jtable上显示
- 请教一个子类访问超类protected域的一个问题
- LinkedList,ArrayList可否通过实现Comparable或Comparator加入比较方法
- 请教高手关于java调用dll的问题?
b的值也不能改变a的值,因为String是不可变的
改变的是引用
{......}A p1=new A(); A p2=new A().
p1=p2
=================================
p1=p2 //这里p1只是引用p2变量
p1和p2还是不同的对象 内存地址也是不一样的至于String 它是final的 只要你创建了一个String 它的值永远不会改变
如果用别的变量对它附值 它也只是引用这个变量 内存还是指向刚创建时的对象
String a="kkkkk";//a指向‘kkkkk'。
String b=a;//b也指向‘kkkkk'。
b="jjjj";//b指向了‘jjjj',a不变。