Re: [問題] 請教String的問題

看板java作者 ( )時間10年前 (2014/12/18 16:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/6 (看更多)
一起回一回 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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.92.133 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1418892876.A.287.html
文章代碼(AID): #1KafPCA7 (java)
文章代碼(AID): #1KafPCA7 (java)