日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

深入理解Java new String()方法

瀏覽:174日期:2022-08-10 13:08:01
問題一:這段代碼創建了幾個對象?

String str1 = new String('aa');

答案是兩個“aa”對象和String對象

其中有一項是常量池常量池在Class文件被加載的時候,會被加載進內存中的方法區中的運行時常量池,而運行時常量池里就包括字符串常量池,Class文件中的字符串在類加載時就會加載到字符串常量池中去

深入理解Java new String()方法

不過在周志明老師在深入java虛擬機中有說到,到了JDK1.7時,字符串常量池就被移出了方法區,轉移到了堆里了。

String str1 = new String(“aa”);'aa'就是被加載進去的字符串,我們可以看看Class文件

深入理解Java new String()方法

這里的aa在之后類加載的時候,會在字符串常量池里創建一個 'aa'對象,這是第一個對象類加載完成了之后,那就要開始正式執行代碼了,執行該行代碼時new一個'aa'的String對象存放在Java堆中,這是第二個對象創建完第二個對象后,虛擬機棧上的str1將會指向第二個對象,也就是堆上的對象

問題二:輸出結果是true還是false?

String str1 = new String('aa'); String str2 = 'aa'; System.out.println(str1 == str2);

答案很明顯是false,因為兩個變量指向的地址不同,一個指向字符串常量池,一個指向堆上的對象,而==比較的就是地址。

問題三:輸出結果是true?

String str1 = new String('aa'); str1.intern(); String str2 = 'aa'; System.out.println(str1 == str2);

首先我們來了解一下intern方法intern的處理是 先判斷字符串常量是否在字符串常量池中,如果存在直接返回該常量,如果沒有找到,說明該字符串常量在堆中,則處理是把堆區該對象的引用加入到字符串常量池中,以后別人拿到的是該字符串常量的引用,實際存在堆中。

也就是說現在字符串常量池中的'aa'實際上是指向堆上的String對象的?所以結果是true?并不是,結果還是false

回到問題一

String str1 = new String('aa');

這段代碼創建了兩個對象,而第一個就是在字符串常量池中的,而intern方法在判斷時會發現字符串常量池中已經存在'aa'對象了,所以它就不用把字符串常量池中添加一個指向堆上的String對象的地址了所以最后intern方法只是返回了'aa'對象,并沒有做任何修改

所以還是str1指向堆,str2指向字符串常量池,結果為false

問題四:那要怎么樣才能true?

String str3 = new String('a') + new String('a');str3.intern();String str4 = 'aa';System.out.println(str3 == str4);

這里打印的結果就是true了

這里的str3生成的方式不再是new String(“aa”);而是new String(“a”) + new String(“a”);拼接起來的方式,因此在編譯后,Class文件中的常量池寫入的是'a'對象而不是'aa'對象,如下圖:

深入理解Java new String()方法

因此intern方法在判斷時會發現字符串常量池中并沒有'aa'對象,于是它就把堆中String對象的引用加入到字符串常量池中。之后創建str4的時候,str4就會先在字符串常量池中先查找有沒有'aa',于是它找到了intern放入的引用,并把這個引用賦給str4所以str3和str4都是同一個引用,str3==str4,為true

問題五:那么這段代碼又創建了幾個對象?

String str3 = new String('a') + new String('a');

答案是五個

因為使用+號的String字符串拼接,底層其實都是先創建一個StringBuilder對象,然后調用append方法把要+的字符串都append進去,最后toString創建一個新的String對象如下圖:

深入理解Java new String()方法

紅色的地方就是new出來對象的語句,而綠色則是兩次append四個紅色一共四個對象,再加上字符串常量池上創建的'a'對象,一共五個

這也正是為什么阿里巴巴代碼規范中不建議在for循環里使用+號拼接字符串

深入理解Java new String()方法

String str1 = 'aaa';String str2 = 'bbb';String str4 = str1 + str2;

這個的String str4 = str1 + str2;創建了兩個對象,StringBuilder和toString時生成的String對象

那下面這段呢?是'aaa'對象加'bbb'對象加StringBuilder和toString時生成的String對象一共四個對象嗎?

String str5 = 'aaa' + 'bbb';

很可惜這段只創建了1個對象java編譯器在編譯這段的時候做了優化,實際上'aaa'+'bbb'會先拼接成'aaabbb'之后才開始編譯,也就是說這段代碼等于是String str5 = “aaabbb”如下圖:(code里面沒有任何new操作)

深入理解Java new String()方法

到此這篇關于深入理解Java new String()的文章就介紹到這了,更多相關Java new String()內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品女人| 国产精品黑丝在线播放| 成人av二区| 女人av一区| 国产精品av久久久久久麻豆网| 亚洲风情在线资源| 亚洲综合在线电影| 99精品在线| 国产精品日本| 亚洲精品一二| 国产精品一区二区精品| 狠狠久久伊人| 日韩一区欧美| 欧美大黑bbbbbbbbb在线| 在线亚洲自拍| 在线视频精品| 国产精品成人a在线观看| 三级一区在线视频先锋| 在线精品亚洲| 国产精品s色| 97人人精品| 免费不卡中文字幕在线| 午夜一区在线| 欧美日韩va| 国产成人精品一区二区三区在线| 亚洲欧洲高清| 亚洲激精日韩激精欧美精品| 亚洲精品日韩久久| 久久精品国产久精国产| 在线日韩中文| 五月国产精品| 国产精品一区高清| 日韩国产一区二区三区| 国产精品毛片一区二区三区| 国产欧美综合一区二区三区| 欧美黄色网页| 蜜桃久久久久久久| 美女精品久久| 欧美+日本+国产+在线a∨观看| 亚洲开心激情| 福利一区二区三区视频在线观看| 国产综合精品| 欧美久久亚洲| 999国产精品999久久久久久| 综合亚洲色图| 成人国产精品一区二区免费麻豆| 天堂а√在线最新版中文在线| 亚洲神马久久| 久久一区精品| 免费视频久久| 精品久久久中文字幕| 激情久久婷婷| 91精品尤物| 亚洲国产不卡| 欧美精品1区| 亚洲大全视频| 国产精品九九| 蘑菇福利视频一区播放| 嫩呦国产一区二区三区av| 好看的av在线不卡观看| 久久超级碰碰| 欧美精品一二| 免费看一区二区三区| 香蕉成人久久| 色在线视频观看| 久久精品99国产精品日本| 欧美aa国产视频| 国产精品99久久久久久董美香| 伊人久久婷婷| 国产精品视频一区二区三区| 免费中文字幕日韩欧美| 日韩理论视频| 国产精品九九| 中文字幕av亚洲精品一部二部| 久久九九99| 久久精品九色| 久热精品在线| 99久久久久| 国产一区二区三区四区五区| 蜜臀精品一区二区三区在线观看 | 麻豆成人综合网| 蜜臀久久99精品久久久久久9 | 国产精品夜夜夜| 亚洲自啪免费| 久久免费国产| 精品国产中文字幕第一页| 亚洲免费成人av在线| 三级小说欧洲区亚洲区| 国产亚洲精品美女久久 | 男女男精品视频网| 久久国产毛片| 国产成人免费视频网站视频社区| 国产日本精品| 日韩激情一二三区| 噜噜噜久久亚洲精品国产品小说| 热三久草你在线| 欧美aⅴ一区二区三区视频| 日本99精品| 中文字幕日韩欧美精品高清在线| 伊人精品一区| 欧美一区二区三区激情视频| 成人一二三区| 国产在线观看91一区二区三区| 欧美日一区二区在线观看| 日韩中文字幕亚洲一区二区va在线| 久久久一二三| 久久久久国产一区二区| 日韩视频网站在线观看| 精品久久中文| 九九九精品视频| 久久精品国产免费| 综合国产在线| 日本 国产 欧美色综合| 久久电影一区| 亚洲乱码视频| 四虎在线精品| 亚洲精品亚洲人成在线观看| 亚洲一级大片| 青青国产精品| 国产精品对白| 免费亚洲婷婷| 精品99久久| 成人精品久久| 群体交乱之放荡娇妻一区二区| 伊人久久高清| 亚洲韩日在线| 韩日一区二区三区| 六月婷婷一区| 日韩毛片网站| 国产欧美另类| 免费日韩成人| 在线亚洲人成| 激情久久中文字幕| 国产一级久久| 亚州欧美在线| 国产精品调教| 国产不卡精品| 久久精品免费一区二区三区 | 日韩黄色av| 久久gogo国模啪啪裸体| 国产一区福利| 久久久久国产| 国产精品日本欧美一区二区三区| 中文字幕一区二区精品区| 国产乱码精品| 日韩欧美综合| 国产手机视频一区二区| 日韩欧美久久| 精品久久精品| 亚洲一级网站| 亚洲精品三级| 国产精品视频一区二区三区综合| 国产一区二区三区国产精品| 神马午夜在线视频| 成人精品国产亚洲| 蜜芽一区二区三区| 国产亚洲福利| 人人精品亚洲| 国产成人免费视频网站视频社区| 999久久久精品国产| 亚洲综合精品四区| 国产麻豆综合| 免费视频一区二区| 正在播放日韩精品| 国产亚洲观看| 国产精品人人爽人人做我的可爱| 四虎精品一区二区免费| 欧美亚洲国产一区| 91精品国产乱码久久久久久久| 欧美成人aaa| 国产精品夜夜夜| 成人午夜网址| 国产成人精品999在线观看| 国产精品qvod| 久久国内精品| 色综合狠狠操| 91超碰国产精品| 91大神在线观看线路一区| 牛牛精品成人免费视频| av免费不卡国产观看| 视频一区中文| 亚洲精品欧美| а√天堂中文在线资源8| 欧美特黄一区| 欧美视频久久| 亚洲在线成人| 日韩一区欧美| 久久久久久久久99精品大| www成人在线视频| 久久久久久久久久久9不雅视频| 久久99国产精品视频| 国产一区二区三区亚洲综合| 麻豆9191精品国产| 亚洲欧美高清| 999久久久精品国产| 一本一道久久a久久精品蜜桃| 免费在线成人| 91精品国产91久久久久久黑人| 欧美jjzz| 红桃视频欧美|