Re: [问题] 请教String的问题

楼主: Chikei ( )   2014-12-18 16:54:34
一起回一回
1. String是final class代表的含意是这个class不能被继承,跟能不能被修改没关系
也就是说final修饰的是class的类型,不是class的内容。
2. 原po你少了一个认知,java内所有非基本型别的变量代表的都是参照(指标)。
所以
String var = "str1";
var = "str2";
第一行code的含意是定义一个参照var并指向一个String object内含"str1"
第二行code的含意是把参照var指向"另外一个"String object内含"str2"
3. 原文ex2 "看起来"可以修改String是因为你的e1从头到尾指到同一个Ex2 object,
而tell()只是修改那一个Ex2 object里面的temp参照。
两次println(e1.temp)得到的String object "不是同一个" String object
4. 所谓String不能被修改是体现在String的object method,请参阅JDK,你会发现
所有"修改"的method都是回传一个String,而这个回传值会指向跟原本被呼叫
method的String不同一个object,也就是说
String foo = "str";
String bar = foo.substring(1);
foo/bar会指向不同的String object

Links booklink

Contact Us: admin [ a t ] ucptt.com