瘋狂Java之學習筆記(19)-----------封裝類和匿名類__Java

來源:互聯網
上載者:User
封裝類(Wrapper Class)

  封裝類是針對於原生資料類型的封裝。

  因為有8個原生資料類型,所以對應有8個封裝類。

  所有的封裝類(8個)都位於java.lang下。

  Java中的8個封裝類分別是:Byte, Short, Integer, Long, Float, Double, Character, Boolean,它們的使用方式都是一樣的,可以實現原生資料類型與封裝類型的雙向轉換。

 

 

  Java語言是一個物件導向的語言,但是Java中的基礎資料型別 (Elementary Data Type)卻是不物件導向的,這在實際使用時存在很多的不便,為瞭解決這個不足,在設計類時為每個基礎資料型別 (Elementary Data Type)設計了一個對應的類進行代表,這樣八個和基礎資料型別 (Elementary Data Type)對應的類統稱為封裝類(Wrapper Class),有些地方也翻譯為外覆類或資料類型類。

         封裝類均位於java.lang包,封裝類和基礎資料型別 (Elementary Data Type)的對應關係如下表所示:

封裝類對應表

基礎資料型別 (Elementary Data Type)

封裝類

byte

Byte

boolean

Boolean

short

Short

char

Character

int

Integer

long

Long

float

Float

double

Double

         在這八個類名中,除了Integer和Character類以後,其它六個類的類名和基礎資料型別 (Elementary Data Type)一直,只是類名的第一個字母大寫即可。

         對於封裝類說,這些類的用途主要包含兩種:

                   a、作為和基礎資料型別 (Elementary Data Type)對應的類類型存在,方便涉及到對象的操作。

                   b、包含每種基礎資料型別 (Elementary Data Type)的相關屬性如最大值、最小值等,以及相關的操作方法。

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

         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,則結果為120

         int n = Integer.parseInt(“120”,10);

         //將字串”12”按照十六進位轉換為int,則結果為18

         int n = Integer.parseInt(“12”,16);

         //將字串”ff”按照十六進位轉換為int,則結果為255

         int 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”。

                            另外一個toString方法則實現將int值轉換為特定進位的字串:

                                     public static int parseInt(String s, int radix)

                            使用範例程式碼如下:

                                     int m = 20;

                                     String s = Integer.toString(m);

                            則字串s的值是”14”。

         其實,JDK自從1.5(5.0)版本以後,就引入了自動拆裝箱的文法,也就是在進行基礎資料型別 (Elementary Data Type)和對應的封裝類轉換時,系統將自動進行,這將大大方便程式員的代碼書寫。使用範例程式碼如下:

                   //int類型會自動轉換為Integer類型

                   int m = 12;

                   Integer in = m;

                   //Integer類型會自動轉換為int類型

                   int n = in;

         所以在實際使用時的類型轉換將變得很簡單,系統將自動實現對應的轉換。

 

 

  下面以主要Integer類為例說明。   Integer

  Integer類將int類型的值封裝到一個對象中。

  Integer通過下面這個構造方法構造相應的整型數的對象:

  public Integer(int value);

  public int intValue()方法則返回這個封裝類所封裝的整型值。   自動裝箱/拆箱(Autoboxing/unboxing)

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

  自動裝箱/拆箱大大方便了基本類型資料和它們封裝類的使用。

  自動裝箱:基本類型自動轉為封裝類(int >> Integer)

  自動拆箱:封裝類自動轉為基本類型(Integer >> int)

 

  比如下面的例子:

 

import java.util.ArrayList;import java.util.Collection;public class BoxTest{    public static void main(String[] args)    {        Collection<Integer> c = new ArrayList<Integer>();            c.add(3);//將int類型的3轉換為Integer類型並放到集合當中            }
}
    封裝類型     : Byte,Integer,Short,Long,Boolean,Character,Float,Double等

基本類型(primitive type)
不用new來建立變數,而是建立一個並非是“引用”的“自動”變數。這個變數擁有它的“值”,共置於堆

棧中,因此更加高效。要確定每種基本類型所佔儲存空間的大小。
基本類型            大小           最小值             最大值         封裝器類型
boolean                -             -                   -         Boolean
char              6bit              Unicode 0      Unic ode 2(16)-1   Character
byte                       8bit                  -128                +127               Byte
short                      16bit                   -2(15)             2(15)-1           Short
int                          32bit                  -2(31)              2(31)-1           Integer
long                       64bit                 -2(63)              2(63)-1           Long
float                       32bit                 IEEE754           IEEE754          Float
double                   64bit               IEEE754            IEEE754          Double
void                        -                       -                        -                 Void

Java整型

int 4位元組(32位) -2147483648 ~ 2147483647   (正好超過20億)
short 2位元組(16位) -32768 ~ 32767
long 8位元組(64位) -9223372036854775808 ~ 9223372036854774807
byte 1位元組(8位) -128 ~ 127



       浮點類型

float

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.