麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

java 自動裝箱自動拆箱

2019-11-15 01:18:52
字體:
來源:轉載
供稿:網(wǎng)友
java 自動裝箱自動拆箱1.Java數(shù)據(jù)類型

在介紹Java的自動裝箱和拆箱之前,我們先來了解一下Java的基本數(shù)據(jù)類型。

在Java中,數(shù)據(jù)類型可以分為兩大種,PRimitive Type(基本類型)和Reference Type(引用類型)。基本類型的數(shù)值不是對象,不能調用對象的toString()、hashCode()、getClass()、equals()等方法。所以Java提供了針對每種基本類型的包裝類型。如下:

Java基本數(shù)據(jù)類型
INDEX基本類型大小數(shù)值范圍默認值包裝類型
1boolean ---true,falsefalseBoolean
2byte8bit-2^7 -- 2^7-10Byte
3char16bit
/u0000 - /uffff
/u0000Character
4short16bit-2^15 -- 2^15-10Short
5int32bit-2^31 -- 2^31-10Integer
6long64bit-2^63 -- 2^63-10Long
7float32bitIEEE 7540.0fFloat
8double64bitIEEE 7540.0dDouble
9void --- ------Void

2.Java自動裝箱和拆箱定義

  Java 1.5中引入了自動裝箱和拆箱機制:

(1)自動裝箱:把基本類型用它們對應的引用類型包裝起來,使它們具有對象的特質,可以調用toString()、hashCode()、getClass()、equals()等方法。

如下:

Integer a=3;//這是自動裝箱

其實編譯器調用的是static Integer valueOf(int i)這個方法,valueOf(int i)返回一個表示指定int值的Integer對象,那么就變成這樣:

Integer a=3;   =>    Integer a=Integer.valueOf(3);

(2)自動拆箱:跟自動裝箱的方向相反,將Integer及Double這樣的引用類型的對象重新簡化為基本類型的數(shù)據(jù)。

如下:

 int i = new Integer(2);//這是拆箱

編譯器內部會調用int intValue()返回該Integer對象的int值

注意:自動裝箱和拆箱是由編譯器來完成的,編譯器會在編譯期根據(jù)語法決定是否進行裝箱和拆箱動作。

3.基本數(shù)據(jù)類型與對象的差別

  • 基本數(shù)據(jù)類型不是對象,也就是使用int、double、boolean等定義的變量、常量。
  • 基本數(shù)據(jù)類型沒有可調用的方法
 eg:  int t = 1;     t.  后面是沒有方法。 Integer t =1; t.  后面就有很多方法可讓你調用了。

4.什么時候自動裝箱

Integer i = 10; //裝箱 int t = i; //拆箱,實際上執(zhí)行了 int t = i.intValue();

  在進行運算時,也可以進行拆箱。

Integer i = 10; System.out.println(i++);

5.什么時候自動裝箱

//在-128~127 之外的數(shù) Integer i1 =200;   Integer i2 =200;           System.out.println("i1==i2: "+(i1==i2));                    // 在-128~127 之內的數(shù) Integer i3 =100;   Integer i4 =100;   System.out.println("i3==i4: "+(i3==i4));
輸出的結果
 i1==i2: false i3==i4: true

說明

  equals() 比較的是兩個對象的值(內容)是否相同。

  "==" 比較的是兩個對象的引用(內存地址)是否相同,也用來比較兩個基本數(shù)據(jù)類型的變量值是否相等。

  前面說過,int 的自動裝箱,是系統(tǒng)執(zhí)行了 Integer.valueOf(int i),先看看Integer.java的源碼

public static Integer valueOf(int i) {    if(i >= -128 && i <= IntegerCache.high)  // 沒有設置的話,IngegerCache.high 默認是127        return IntegerCache.cache[i + 128];    else        return new Integer(i);}

  對于–128到127(默認是127)之間的值,Integer.valueOf(int i)返回的是緩存的Integer對象(并不是新建對象)

  所以范例中,i3 與 i4實際上是指向同一個對象。

  而其他值,執(zhí)行Integer.valueOf(int i) 返回的是一個新建的Integer對象,所以范例中,i1與i2 指向的是不同的對象。

  當然,當不使用自動裝箱功能的時候,情況與普通類對象一樣,請看下例:

Integer i3 =new Integer(100); Integer i4 =new Integer(100); System.out.println("i3==i4: "+(i3==i4));//顯示false

  致謝:感謝您的耐心閱讀!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产乱一区二区三区视频 | 免费三级大片 | 日本在线视频二区 | 久久精品视频日本 | 黄色大片在线观看 | 成人在线精品视频 | 国产成人高潮免费观看精品 | 午夜亚洲视频 | 亚洲成人综合网站 | 日韩每日更新 | 黄网站免费入口 | 九九热国产视频 | 一本色道久久综合亚洲精品小说 | 黄色网址免费在线 | 一级α片免费看刺激高潮视频 | 免费毛片儿 | 日韩精品中文字幕一区 | 国产在线精品91 | 成人午夜在线免费视频 | 国产精品视频yy9299一区 | 日本爽快片100色毛片视频 | 亚洲精品日韩色噜噜久久五月 | 黄色成人在线 | 成人一区二区三区在线 | 91网站在线观看视频 | 在线看免费观看av | 国产激情视频在线 | 免费一级电影 | 国产女做a爱免费视频 | 久久精品欧美视频 | 美女久久久久久久久 | 性 毛片| 久久国产精品99久久人人澡 | 国产88久久久国产精品免费二区 | 中日韩免费视频 | 久久中文字幕在线观看 | 91精品国产综合久久婷婷香 | 色综av | 成人在线观看一区二区 | 一级黄色在线观看 | 美女羞羞视频网站 |