Java基礎資料型別 (Elementary Data Type)與封裝類型

來源:互聯網
上載者:User

標籤:基本類型   賦值   問題   http   文章   類型轉換   ble   十進位   常見   

基礎資料型別 (Elementary Data Type)的封裝類

為什麼需要封裝類? 

Java並不是純物件導向的語言。Java語言是一個物件導向的語言,但是Java的基礎資料型別 (Elementary Data Type)卻不是物件導向的。但是我們在實際使用中經常需要將基本資料轉化成對象,便於操作。比如:集合的操作中,這是,我們就需要將基本類型資料轉化為對象。

封裝類均位於java.lang包,使用時不需要匯入,系統自動匯入。Java中的8個封裝類分別是:Byte,Short,Integer,Long,Float,Double,Character,Boolean它們的使用方式都是一樣的,可以實現原生資料類型與封裝類型的雙向轉換。

封裝類和基礎資料型別 (Elementary Data Type)的對象關係:

基本類型  封裝器類型
boolean Boolean
char Character
int Integer
byte Byte
short Short
long Long
float Float
double Double

如何使用封裝類?

封裝類的作用:

  • 提供:字串、基礎資料型別 (Elementary Data Type)、對象之間互相轉化的方式!
  • 包含每種基礎資料型別 (Elementary Data Type)的相關屬性,如:最大值、最小值等

由於八個封裝類的使用比較類似,下面以最常用的Integer類為例子介紹封裝類的實際使用。Integer類繼承Number父類。

1、實現int和Integer類之間的轉換(該過程中使用了自動裝箱和自動拆箱的原理)

在實際轉換時,使用Integer類的構造方法和Integer類內部的intValue方法實現這些類型之間的相互轉換,實現的代碼如下:

int n = 10;Integer in = new Integer(100);//將int類型轉換為Integer類型Integer in1 = new Integer(n);//將Integer類型的對象轉換為int類型int m = in.intValue();

2、Integer類內部的常用方法

在Integer類內部包含了一些和int操作有關的方法,下面介紹一些比較常用的方法:

a、parseInt方法

public static int parseInt(String s)

該方法的作用是將數字字串轉換為int數值。在以後的介面編程中,將字串轉換為對應的int數字是一種比較常見的操作。使用樣本如下:

String s = “123”;int n = Integer.parseInt(s);

則int變數n的值是123,該方法實際上實現了字串和int之間的轉換,如果字串都包含的不是都是數字字元,則程式執行將出現異常。

另外一個parseInt方法:

public static int parseInt(String s, int radix)

則實現將字串按照參數radix指定的進位轉換為int,使用樣本如下:

//將字串”120”按照十進位轉換為int,則結果為120int n = Integer.parseInt(“120”,10);//將字串”12”按照十六進位轉換為int,則結果為18int n = Integer.parseInt(“12”,16);//將字串”ff”按照十六進位轉換為int,則結果為255int n = Integer.parseInt(“ff”,16);

這樣可以實現更靈活的轉換。

b、toString方法

public static String toString(int i)

該方法的作用是將int類型轉換為對應的String類型。

使用範例程式碼如下:

int m = 1000;String s = Integer.toString(m);//則字串s的值是”1000”。

在進行封裝類與基礎資料型別 (Elementary Data Type)之間進行數值之間的轉化時,我們經常使用的自動裝箱和自動拆箱。這是JDK5.0的新增的特性。

自動裝箱和自動拆箱(auto-boxing & auto-unboxing)

JDK5.0的一個新特性是自動裝箱和自動拆箱。

自動裝箱

  • 基本類型就自動地封裝到與它相似類型的封裝中,如:Integer i = 100;
  • 本質上是,編譯器編譯時間自動添加:Integer i = new Integer(100);

 自動拆箱

  • 封裝類對象自動轉換成基礎資料型別 (Elementary Data Type)。如:int a = new Integer(100);
  • 本質是上,編譯器編譯時間自動添加:int a = new Integer(100).intValue();

在Integer類中自動裝箱和自動拆箱問題中遇到的問題:

Integer  d = 1234;Integer  d2 = 1234;        System.out.println(d==d2);System.out.println(d.equals(d2));        System.out.println("###################"); Integer d3 = -100;    // [-128,127]之間的數,仍然當做基礎資料型別 (Elementary Data Type)來處理。Integer d4 = -100;System.out.println(d3==d4);System.out.println(d3.equals(d4));

顯示結果:

falsetrue###################truetrue

當兩個數都是100的時候==判斷相等,當兩個數都是200的時候判斷不相等。

原因:查看內部實現代碼可知,Integer類有一個緩衝問題,它會緩衝-128~127之間的整數。也就是說如果將-128~127之間的數值賦值給Integer類對象,在比較兩個對象(d3==d4)時比較的是兩個對象的數值。超過這個範圍比較的是對象的記憶體位址。

 

參考:

http://www.mamicode.com/info-detail-1015549.html

http://www.jobui.com/mianshiti/it/java/7088/

http://cakin24.iteye.com/blog/2326545

http://lib.csdn.net/article/javase/2159(以上內容轉自此篇文章)

http://www.cnblogs.com/mengdd/archive/2013/01/21/2869921.html

http://www.jianshu.com/p/5d7c9b077771

http://www.cnblogs.com/huajiezh/p/5225637.html

http://www.cnblogs.com/xianzheng/p/5205968.html

Java基礎資料型別 (Elementary Data Type)與封裝類型(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.