java new string作用_java中直接new String对象?
首先明確一點,在Java中==比較的是兩個對象的地址,equals()比較的是兩個對象的值,如果使用equals()來替換==,則兩個輸出結果都為true。
言歸正傳,為什么第一個返回為false?
先看一下intern()這個方法的描述:
大意就是是一個字符串調用interned()方法的時候,如果池中有和這個字符串值相等的字符串,就會將池中的字符串返回,如果沒有,就將這個字符串添加進去,并返回這個字符串的引用。
but,通過new String("string")這個構造方法是先在字符串池中創建了構造參數"string",這是第一次創建,字符串池中保存的是第一次的引用。接著new String()從字符串池中復制了"string",在堆中重新創建的了一次對象,這是第二次創建,所以調用interned()之后返回的是第一次創建的字符串池中的"string",而str1是堆中的"string",值相同但是地址不一樣,所以==為false。
str2的StringBuilder的toString()
是通過char[]調用String數組,在字符串池中創建了abcdef這個字符串,字符串中保存的str2的引用,所以調用interned()的時候返回的是str2的引用,所以==為true。
這個問題我剛看到也是不知道為什么,也是思考了一下午直到現在才想明白。希望多提這種問題來促進大家的思考和交流,共同成長。
總結
以上是生活随笔為你收集整理的java new string作用_java中直接new String对象?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕电脑客服中心(华硕电脑客服中心检测要
- 下一篇: java中cell无法输出_java