亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

關于java中Int等類型裝箱時發生的奇怪現象

瀏覽:135日期:2024-03-30 13:48:40

問題描述

各位朋友,我下面說一下我的理解,各位看看是否正確(注意不要瞎延伸,如果我對就告訴我說得是對的,讓我得到確認無誤。另外如果我錯了不要鄙視我,幫忙提出錯在哪并給出真正的答案是個好方法。我在知乎問問題有人把我鄙視的心理拔涼拔涼的了都):理解1:int,byte,short這幾個基本類型變量的裝箱操作,底層都有一個緩沖池(java源碼可以找到實現),也就是Object a=200; 這樣的操作,就會創建一個新對象裝下200,因為200超出了緩沖池。所以每次裝箱都new新的對象來包裝200.因此:Object a=200;與Object b=200; 判斷a==b返回false,因為其a和b不是指向同一個對象。而Object a =100與Object b=100 其a和b是指向同一個對象。(因為由于緩存池機制,導致裝箱的時候,只從池子中取一個值為100的對象返回,所以a和b地址相同,a==b返回true)理解2:同時,裝箱的int,byte,short有個不可變的特性(就像String類的對象也具有不可變的性質)。因此每次改變某個對象的值,都是去創建一個新的對象,而無法真正改變緩存池中這個對象本身。例如:

Object a=200;Object b=a; //現在a==b返回true

b=201; //想修改b指向的對象的值,但由于裝箱后的int,short以及String之類的那種不可變性,導致201是創建了一個新對象,把地址返回給b。而不是把原來那個200對象改為201.重復:在第二行,a和b是指向同一個對象,但是第三行修改b對象的時候,由于b對象的不可修改特性,導致最后結果是b是指向一個201的新對象,a還是指向200的那個對象。 也就是說裝箱后的基本類型不能再次被改變,只能創建新對象。(你有改變那個200對象本身的辦法嗎)理解3:以上的緩沖池和不可變性適用于String對象。(雖然String沒有裝箱,但是String的機制跟裝箱后的Integger差不多一樣)理解4:裝修后的int,short,byte。以及String類,都有一個辦法直接去創建新的對象,而不經過緩存池。那就是new。例如String a="123"; String b="123"; 這樣a和b都指向緩存池中的"123"而String a=new String("123"); 與 String b=new String("123");就不經過緩存池,直接創建了2個"123"的對象所以,a==b返回false。

問題解答

回答1:

String是對象,沒有包裝器。

String a = '123';直接把引用指向常量池。而String b = new String(a);是把a的內容在堆中復制一份。

標簽: java
相關文章:
主站蜘蛛池模板: 美女性高潮视频 | 在线一区观看 | videosg最新欧美另类 | 亚洲国产成人资源在线桃色 | 亚洲精品一区二区手机在线 | 免费看黄色片视频 | 九一国产精品视频 | 黄色片视频 | 国产精品夜间视频香蕉 | 91福利国产在线观一区二区 | 一级片特黄| 欧洲一级毛片免费 | 欧美日韩一卡 | 免费三片在线观看网站 | 国产制服丝袜在线观看 | 日本二区免费一片黄2019 | 国模超大尺度私拍 | 国产精品三级国语在线看 | 女人aaaaa片一级一毛片 | 免费二级c片在线观看a | 成人做爰毛片免费视频 | 欧美午夜免费一级毛片 | 一区二区三区不卡免费视频97 | 日韩欧美亚洲国产高清在线 | 日本护士a做爰免费观看 | 精品视频在线观看一区二区 | 手机看片日韩国产福利视频 | 国产成人亚洲毛片 | 日本色网址 | 俄罗斯一级毛片免费视频 | 亚洲欧美日韩国产精品久久 | 91国内视频 | 欧州一级毛片 | 久久精品99无色码中文字幕 | 亚洲欧美在线视频免费 | 国产精品一区二区三区久久 | 亚洲欧美日韩中文字幕在线一 | 成人啪精品视频免费网站 | 国产a∨一区二区三区香蕉小说 | 亚洲精品xxx | 成人一级片在线观看 |