java 基礎 之 包裝類
阿新 • • 發佈:2018-12-25
包裝類的簡單介紹:
- java 8種基本資料型別 對應 8中基本包裝類
- 除了Char 對應Character, int對應Integer之外.其他6種基本資料型別對應的都是首字母大寫
java不同版本對包裝類的加強
- JDK 1.5 之前
- 把基本資料型別轉換成包裝型別都是使用構造方法
- 8個包裝類中除了character之外.還可以通過傳入一個字串引數來構建包裝類
- 包裝類轉成基本資料型別可以使用包裝類的
XXXValue()靜態方法[已經過時]
- JDK 1.5 之後提供了自動裝箱與拆箱的功能
- 自動裝箱
- 可以把一個基本資料型別的值.直接賦值給包裝類
- 自動拆箱
- 把一個包裝類的值.直接賦值給一個基本資料型別
- 自動裝箱
- 除了自動裝箱與自動拆箱以外.包裝類還可以與String 進行相互轉換
- String 轉基本資料型別
- 包裝類提供的靜態方法 parseXXX(String s),
- 除了Character 之外所有的方法都提供了該方法;
- 包裝類提供的XXX(String s) 構造器
- 利用String過載的多個valueOf()方法;
- String 轉基本資料型別
- JDK 1.7 版本之後又給所有的包裝類添加了一個 compare(xxx,xxx)方法.用於比較兩個引數的大小
- 大於 返回 1
- 等於返回 0
- 小於返回 -1
- 值得一提的是Date日期了也有這個方法
- JDK .17 除了compare之外,還給character 增加了大量的工具方法來進行判斷
- JDK 1.8 版本再次加強了這些包裝類的功能.為整型包裝類支援無符號算數運算.
詳見jdk API
例項程式碼
package com.example.javademo.Wrapper; import org.junit.Test; /** * 本篇主要演示包裝類與基本資料型別的自動裝箱與自動拆箱 * * @author 扎羅 * @version 1.0 * @since 2018年12月21日 */ public class AutoBoxAndAutoUnBox { /** * 演示自動裝箱與拆箱 */ @Test @SuppressWarnings("all") public void autoBoxAndAutoUnBoxTest() { int b = 12; // 自動裝箱 Integer i = b; //自動拆箱 int a = i; // JDK 1.5 以前 基本資料型別轉成包裝類的方式;都是依賴夠著方法 Integer c = new Integer(12); Integer d = new Integer("12"); // JDK 1.5 以前 包裝類轉成基本資料型別 int cc = c.intValue(); int i1 = d.intValue(); } @Test public void stringTest() { //String 轉 基本資料型別 char c1 = 'c'; int i2 = 123; long l1 = 12341239L; byte b1 = 1; double d1 = 12.1d; float f1 = 1212.11f; boolean bo1 = false; //String 提供的過載的valueOf() 方法 String s1 = String.valueOf(i2); String s2 = String.valueOf(l1); String s3 = String.valueOf(b1); String s4 = String.valueOf(d1); String s5 = String.valueOf(f1); String s6 = String.valueOf(bo1); String s7 = String.valueOf(c1); System.out.println("=======int 轉 String : " + s1); System.out.println("=======long 轉 String : " + s2); System.out.println("=======double 轉 String : " + s4); System.out.println("=======boolean 轉 String : " + s6); // 包裝類提供的parseXXX()與構造器(); int i3 = Integer.parseInt(s1); System.out.println("======Integer parseInt()" + i3); double v = Double.parseDouble(s4); System.out.println("======Integer parseInt()" + v); //基本型別裝字串.最簡單的方法 + ""; String ss = d1+""; } /** * Integer 的特殊性 * Integer快取設計 -128~127 剛好是short的範圍 */ @Test public void integerTest(){ int i1 = 12; Integer i2 = 129; System.out.println("=====快取以外的integer例項比較" + (i1==i2)); /* 這兩個明明看起來數字相等.但是輸出的結果卻為false; 原因就在於Integer 快取的設計. 在 -128 ~ 127 的數字都是取自快取.但是不在這個範圍內的==就屬於比較地址值了. 所以不相等 */ Integer i3 = 129; System.out.println("快取以外的Integer例項進行比較"+(i2==i3)); } /** * JDK 7 新增的compare 方法 * 返回結果 1 代表 大於 * 0 代表 等於 * -1代表 小於 */ @Test public void compareTest(){ /* *比較特殊的boolean的比較 */ System.out.println(Boolean.compare(true,false)); //1 System.out.println(Boolean.compare(false,false)); //0 System.out.println(Boolean.compare(false,true)); //-1 System.out.println(Boolean.compare(true,true)); //0 System.out.println("==========================="); Integer i = 10; Integer s = 1222; System.out.println(Integer.compare(i,s)); //-1 } }