程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> java類的問題-大神幫幫忙解決包裝類的問題

java類的問題-大神幫幫忙解決包裝類的問題

編輯:編程解疑
大神幫幫忙解決包裝類的問題

包裝類是不可變類,在構造了包裝類對象後,不允許更改包裝在其中的值。這句話究竟什麼意思,問了幾個人各種說法,例如 Integer it只是聲明一個引用。“引用”這種東西唯一的作用就是指向某個具體的東西,放在這裡來說,你初始化的時候,讓這個引用指向了21這個值,然後在it=22這裡又讓他指向了22。就好比說“我剛才代表21,現在我代表22”,改變的是這個引用,跟跳槽啊變心的戀人啊抗戰時的漢奸啊似的,但那些個值本身是不改變的,21還是21,22還是22. 不明白究竟裡面存的是什麼,存的引用地址嗎?但是不是已經變了麼?如果不是引用地址,那裡面存的什麼?來個明白的給說說。謝謝啦,最好有內存分配圖

最佳回答:


引用好像是存在棧裡面的,21,22這些是存在堆裡面的。int a = 21; 是棧內的a指向堆內的21,。a = 22; 是本身a指向堆內的21現在變成指向堆內的22。但是堆裡面還是有21和22的,只是21現在沒被人引用而已,有可能會被system.gc()回收。<- 是我的理解,不一定對的

第一句“包裝類是不可變類,在構造了包裝類對象後,不允許更改包裝在其中的值”的意思可能是
Integer a = Integer.valueOf(22); 把int-> Integer.
但是a的方法裡面沒有改變22這個值的方法,只有Value,floatValue,byteValue這些轉換類型的方法。Integer還有很多靜態方法,那些靜態方法根本就不需要用到a,直接Integer.進制轉換,Integer.parst(),Integer.ValueOf()就可以。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved