有關(guān)練習(xí)中s3,s4的以及equals()方法的使用
String s1 = "imooc";
String s2 = "imooc";
String s3= "I love "+ s1;?
String s4 = "I love " + s1;
代碼中的定義,并沒有用到new,不應(yīng)該同s1,s2的理解(多次出現(xiàn)的字符常量,編譯器程序只創(chuàng)建一個(gè))一樣么?s3,s4為什么是指向的不同單元?。?/p>
因(s3==s4)比較的是s3和s4引用所指向的內(nèi)存單元的地址,如需比較s3,s4的值重寫equals()方法??墒菫槭裁淳幾g器不允許重寫?提示:此類中沒有非靜態(tài)字段,不能重寫equals()。這是為什么啊?
謝謝。
2016-09-08
不需要重寫equals,因?yàn)镾tring類里面已經(jīng)幫我們寫好了比較內(nèi)容的equals,你直接調(diào)用就可以了
2016-06-19
一旦一個(gè)字符串在內(nèi)存中創(chuàng)建,則這個(gè)字符串將不可改變。
多次出現(xiàn)的字符常量,編譯器程序只創(chuàng)建一個(gè)
注意這里是常量哦
通過 String s3="I love"+s1; ,其實(shí)質(zhì)是根據(jù)s1創(chuàng)建了字符串對(duì)象,變量 s3 指向了創(chuàng)建的字符串對(duì)象。
通過 String s4="I love"+s1; ,其實(shí)質(zhì)是根據(jù)s1創(chuàng)建了新的字符串對(duì)象,變量 s4 指向了新創(chuàng)建的字符串對(duì)象。
這是兩個(gè)不同的對(duì)象 上面的代碼 幫助理解一下
上次碰到這個(gè)問題 是在主方法里進(jìn)行調(diào)試的時(shí)候 main()方法是static修飾的 靜態(tài)方法中 不能直接訪問非靜態(tài)成員變量和方法 只可直接訪問靜態(tài)變量和方法 所以出現(xiàn)這個(gè)問題 加個(gè)就好了
希望有所幫助
2016-06-14
不相同是應(yīng)該的,相同才是因?yàn)槎啻蝺?yōu)化的結(jié)果。我這里編譯器允許重寫equals啊。
2016-05-23
在我的代碼中,定義S3中l(wèi)ove后面是沒加空格的,s4有,所以會(huì)指向不同的單元,你可以去在確認(rèn)以下,運(yùn)行一下。在重寫equals()時(shí) ,提示非靜態(tài)字段可以在重寫方法中加入靜態(tài)關(guān)鍵字,或者嘗試下在方法前加入一個(gè)@override,希望對(duì)你有幫助