作者peacedove (林帛亨加油!!!)
看板java
标题Re: [问题] 新手问题
时间Fri Aug 5 12:27:50 2011
※ 引述《singlovesong (~"~)》之铭言:
: String a = new String("Test String!");
: String b = a;
: 想请问
: 这样子的意思是什麽意思呢?
: 是把a 的reference 复制给b
: 还是把a的内容复制给b
: 如果是前者的话 那麽从a改内容 是不是b"指"到的这个String 也会更着改
: 如果是後者 那麽为什麽不用写成
: String b = new String(a);
: 是compiler 帮忙做掉的吗?
: 谢谢!
你可以用 == 来测试一下之间的不同
String 用 == 是测试是否为相同的物件
而不是字串内容是否相同
另外String 是 immutable的
当
String a = new String("Test String!");
String b = a;
a == b 会是 true
而
String a = new String("Test String!");
String b = new String(a);
a == b 会是 false
其实当
String a = "test";
String b = "test";
a == b 也会是 true;
然後因为 immutable 的关系,所以你改动其中一个String,并不会影响到另外一个String
应该就是当你写
String a = "test";
记忆体配置一块"test"的区域 然後把a 指向那块区域
然後你再写
a = "bbb" 的时候
因为String被配置後就 immutable的关系
他要在重新配置一块新的"bbb"的区域,再把a指向新的区域
当原本的"test"区域没有任何物件指向他的时候,就会被垃圾回收回收掉
所以改变指向相同东西的String之一
并不会影响到其他的String
Java新手
有错请指正 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.51.171
※ 编辑: peacedove 来自: 220.135.51.171 (08/05 12:28)
1F:推 rete:是String Pool吗? 08/08 15:25