日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java new string作用_java中直接new String对象?

發布時間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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对象?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。