iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0
自我挑戰組

30天Java由淺入深系列 第 29

Day 29 : 基本型態包裹器 - Wrapper Classes

  • 分享至 

  • xImage
  •  

介紹

前言

倒數第二天,今天介紹讓原始資料型態包裹成物件的觀念-- Wrapper Classes

其實就是包裹我們前面所提到的Primitive Data Types,讓它轉以物件的方式運作。

(如果不熟悉的話可以參考Day 6 : 變數(2)))

包裹物件內含會有一個變數和其資料型態

以下是原始資料型別轉換成對應的Wrapper Class :
https://ithelp.ithome.com.tw/upload/images/20221014/20151216LLARKQAf9D.png


自動裝箱(Auto boxing)

一般宣告

與一般宣告變數的概念差不多 :

/*Wrapper_Class variable_name = data;*/
Integer num = 12;
Character gpa = 'A';
  • 即是透過包裹的方式將原始資料型態放到物件內。

也可以先宣告一般型態後再進行包裹

int num = 12;
Integer new_wrapper = num;

valueOf

這與一般宣告變數的方式不太相同。

在建立物件時會使用到new來建立新物件,而包裹器的方法是透過valueOf將變數包裹成物件格式。

int num = 12;
double num2 = 12.33;

var wra1 = Integer.valueOf(num); 
var wra2 = Doublie.valueOf(data1);

System.out.println(wra1.intValue());
System.out.println(wra2.doubleValue());
  • 此程式可以注意兩個地方 :
  1. 原始資料型別包裹成物件的模式

一開始的宣告變數,中間兩段(var代表宣告一無形別變數)即是編譯器如何將其變成物件的方式

編譯器利用Wrapper Class + valueOf來建立包裹器之實例

  1. 印出內容

這邊用「資料類型+Value( )」印出基本型態包裹器內之內容


compareTo

Integer提供與其他同型態物件比較的方法 :

  1. 如果兩者值相同回傳 0
  2. 大於傳入值回傳1
  3. 小於傳入值回傳-1
Integer num = 12;
Integer wra = 24;
System.out.println(num.compareTo(wra));     //Outputs : -1

自動拆箱(Auto unboxing)

簡單來說,就是包裹後,將其拆箱並將內容給原始資料型態儲存

Integer num = 12;
int temp = num;  //編譯器在此步驟拆箱

以上內容若有誤或任何問題,煩請不吝嗇告知,謝謝您!!!/images/emoticon/emoticon77.gif


上一篇
Day 28 : 內部類別 - Inner class
下一篇
Day 30 : 完賽心得
系列文
30天Java由淺入深30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言