[Js-Java SE]對象包裝器與自動裝箱

有時須要須要將基本數據類型轉換爲對象,因此就須要包裝器(wrapper)的存在,全部的基本類型對應都有一個包裝器類app

int——Integer對象

long——Long編譯器

float——Float編譯

double——DoubleList

short——Short數據類型

byte——Bytefloat

(注:以上六個類派生於公共的超類Number)方法

character——Character數據

void——Void類型轉換

boolean——Boolean

在Java SE 5.0以後開始出現自動裝箱(autoboxing)(boxing這種說法源自C#),以下:

ArrayList<Integer> list = new ArrayList<>();

list.add(3);

將被自動裝箱爲

list.add(Integer.valueOf(3));

這就是自動裝箱(autoboxing)

相反地,當將一個Integer對象賦給一個int值,將會自動拆箱

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

· 自動裝箱的規範要求boolean、byte、char≤127,介於-128~127之間的short和int被包裝到固定的對象中,例如:

Integer a = 1000;

Integer b = 1000;

System.out.println(a == b);   // false

然而

Integer a = 100;

Integer b = 100;

System.out.println(a == b);   // true

· 裝箱和拆箱操做是編譯器承認的,而不是JVM,編譯器會在生成字節碼文件的時候插入必要的方法調用

· 包裝器類是不可變的,包含在包裝器中的內容不會改變

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

相關文章
相關標籤/搜索