常見物件-基本型別包裝類

ZHOU_VIP發表於2017-05-20

引入:


package cn.itcast_01;

/*
 * 需求1:我要求大家把100這個資料的二進位制,八進位制,十六進位制計算出來
 * 需求2:我要求大家判斷一個資料是否是int範圍內的。
 * 		  首先你得知道int的範圍是多大?
 * 
 * 為了對基本資料型別進行更多的操作,更方便的操作,Java就針對每一種基本資料型別提供了對應的類型別。包裝類型別。
 * byte 			Byte
 * short			Short
 * int				Integer
 * long				Long
 * float			Float
 * double			Double
 * char				Character
 * boolean			Boolean
 * 
 * 將基本資料型別封裝成物件的好處在於可以在物件中定義更多的功能方法操作該資料。
 * 常用的操作之一:
 * 用於基本資料型別與字串之間的轉換。
 */
public class IntegerDemo {
	public static void main(String[] args) {

		// public static String toBinaryString(int i)
		System.out.println(Integer.toBinaryString(100));
		
		// public static String toOctalString(int i)
		System.out.println(Integer.toOctalString(100));
		
		// public static String toHexString(int i)
		System.out.println(Integer.toHexString(100));

		// public static final int MAX_VALUE
		System.out.println(Integer.MAX_VALUE);
		
		// public static final int MIN_VALUE
		System.out.println(Integer.MIN_VALUE);
	}
}


package cn.itcast_02;

/*
 * Integer的構造方法:
 * public Integer(int value)
 * public Integer(String s)
 * 		注意:這個字串必須是由數字字元組成
 */
public class IntegerDemo {
	public static void main(String[] args) {
		// 方式1
		int i = 100;
		Integer ii = new Integer(i);
		System.out.println("ii:" + ii); //100,引用型別

		// 方式2
		String s = "100";
		Integer iii = new Integer(s);
		System.out.println("iii:" + iii);//100
		
		// String s = "abc";字串必須是由數字字元組成
		Integer iii = new Integer(s);
		System.out.println("iii:" + iii);// NumberFormatException
		
	}
}

int型別和String型別的相互轉換:


package cn.itcast_03;

/*
 * int型別和String型別的相互轉換
 * 
 * int -- String
 *         String.valueOf(number)
 * 
 * String -- int
 *         Integer.parseInt(s)
 */
public class IntegerDemo {
    public static void main(String[] args) {
        // int -- String
        int number = 100;
        // 方式1
        String s1 = "" + number;
        System.out.println("s1:" + s1);  //100
        
        // 方式2,推薦
        String s2 = String.valueOf(number);
        System.out.println("s2:" + s2);  //100
        
        // 方式3
        // int -- Integer -- String
        Integer i = new Integer(number);
        String s3 = i.toString();
        System.out.println("s3:" + s3);  //100
        
        // 方式4
        // public static String toString(int i)
        String s4 = Integer.toString(number);
        System.out.println("s4:" + s4);  //100
        System.out.println("-----------------------------");

        // String -- int
        String s = "100";
        // 方式1
        // String -- Integer -- int
        Integer ii = new Integer(s);
        // public int intValue()
        int x = ii.intValue();
        System.out.println("x:" + x); //100
        
        //方式2,推薦
        //public static int parseInt(String s)
        int y = Integer.parseInt(s);
        System.out.println("y:"+y);   //100
        
    }
}

Integer中進位制轉換的操作,瞭解就行:


package cn.itcast_04;

/*
 * 常用的基本進位制轉換
 * public static String toBinaryString(int i)
 * public static String toOctalString(int i)
 * public static String toHexString(int i)
 * 
 * 十進位制到其他進位制
 * public static String toString(int i,int radix)
 * 由這個我們也看到了進位制的範圍:2進位制到36進位制
 * 為什麼呢?0,...9,a...z,總共加起來36個
 * 
 * 其他進位制到十進位制
 * public static int parseInt(String s,int radix)
 */
public class IntegerDemo {
	public static void main(String[] args) {
		// 十進位制到二進位制,八進位制,十六進位制
		System.out.println(Integer.toBinaryString(100));
		System.out.println(Integer.toOctalString(100));
		System.out.println(Integer.toHexString(100));
		System.out.println("-------------------------");

		// 十進位制到其他進位制
		System.out.println(Integer.toString(100, 10));
		System.out.println(Integer.toString(100, 2));
		System.out.println(Integer.toString(100, 8));
		System.out.println(Integer.toString(100, 16));
		System.out.println(Integer.toString(100, 5));
		System.out.println(Integer.toString(100, 7));
		System.out.println(Integer.toString(100, -7));
		System.out.println(Integer.toString(100, 70));
		System.out.println(Integer.toString(100, 1));
		System.out.println(Integer.toString(100, 17));
		System.out.println(Integer.toString(100, 32));
		System.out.println(Integer.toString(100, 37));
		System.out.println(Integer.toString(100, 36));
		System.out.println("-------------------------");
		
		//其他進位制到十進位制
		System.out.println(Integer.parseInt("100", 10));
		System.out.println(Integer.parseInt("100", 2));
		System.out.println(Integer.parseInt("100", 8));
		System.out.println(Integer.parseInt("100", 16));
		System.out.println(Integer.parseInt("100", 23));
		
		//NumberFormatException
		//System.out.println(Integer.parseInt("123", 2));
		
	}
}

JDK5的新特性自動裝箱和拆箱:


package cn.itcast_05;

/*
 * JDK5的新特性
 * 自動裝箱:把基本型別轉換為包裝類型別
 * 自動拆箱:把包裝類型別轉換為基本型別
 * 
 * 注意一個小問題:
 * 		在使用時,Integer x = null;程式碼就會出現NullPointerException。
 * 		建議先判斷是否為null,然後再使用。
 */
public class IntegerDemo {
	public static void main(String[] args) {
		// 定義了一個int型別的包裝類型別變數i
		// Integer i = new Integer(100);
		Integer ii = 100;
		ii += 200;
		System.out.println("ii:" + ii);

		// 通過反編譯後的程式碼
		// Integer ii = Integer.valueOf(100); //自動裝箱
		// ii = Integer.valueOf(ii.intValue() + 200); //自動拆箱,再自動裝箱
		// System.out.println((new StringBuilder("ii:")).append(ii).toString());

		Integer iii = null;
		if (iii != null) {//建議先判斷是否為null,然後再使用
			iii += 1000;
			System.out.println(iii);
		}
	}
}
 
Integer直接賦值的面試題:


package cn.itcast_06;

/*
 * 看程式寫結果
 * 
 * 注意:Integer的資料直接賦值,如果在-128到127之間,會直接從緩衝池裡獲取資料
 */
public class IntegerDemo {
	public static void main(String[] args) {
		Integer i1 = new Integer(127);
		Integer i2 = new Integer(127);
		System.out.println(i1 == i2);      //false
		System.out.println(i1.equals(i2)); //true
		System.out.println("-----------");

		Integer i3 = new Integer(128);
		Integer i4 = new Integer(128);
		System.out.println(i3 == i4);      //false
		System.out.println(i3.equals(i4)); //true
		System.out.println("-----------");

		Integer i5 = 128;
		Integer i6 = 128;
		System.out.println(i5 == i6);      //false
		System.out.println(i5.equals(i6)); //true
		System.out.println("-----------");

		Integer i7 = 127;
		Integer i8 = 127;
		System.out.println(i7 == i8);      //true
		System.out.println(i7.equals(i8)); //true

		// 通過檢視原始碼,我們就知道了,針對-128到127之間的資料,做了一個資料緩衝池,如果資料是該範圍內的,每次並不建立新的空間
		// Integer ii = Integer.valueOf(127);
	}
}


相關文章