1. 程式人生 > 實用技巧 >Java 包裝類

Java 包裝類

1. 8大基本型別

java是面向物件的語言,基本型別不是new出來的不能使用像object提供的方法,所以有了包裝類

package com.qf.demo02;

import javax.swing.text.InternationalFormatter;

public class Test6Integer {

	public static void main(String[] args) {
		//靜態的屬性:
		System.out.println("獲取最大值:"+Integer.MAX_VALUE);
		System.out.println("獲取最小值:"+Integer.MIN_VALUE);
		//byte的最大值和最小值
		System.out.println(Byte.MAX_VALUE);
		System.out.println(Byte.MIN_VALUE);
		
		//1.建立包裝類的物件:
		int i = 100;//基本型別
//		建立一個包裝類的物件,包裝的是int型別的i
		Integer i2obj = new Integer(i);//將基本型別int,構建一個Integer物件
		Integer i3obj = new Integer("200");//基於String型別,構建一個Integer物件
		
		//2.類的物件有方法
		//A:Integer類,重寫了Object中的toString()方法。不顯示地址,顯示數值本身。String型別
		System.out.println(i2obj.toString());//"100"
		System.out.println(i3obj.toString());//"200"
		
		//B:將物件,轉為基本型別:6種類型 Number父類中提供的
		byte b1 = i2obj.byteValue();//將i2obj這個物件,轉為byte型別的資料
		short s1 = i2obj.shortValue();
		int i2 =i2obj.intValue();
		long l1 = i2obj.longValue();
		float f1 = i2obj.floatValue();
		double d1 = i2obj.doubleValue();
		
		//C:通過靜態的方法parseXXX(),將一個String型別,解析為基本型別的資料
		int i3 = Integer.parseInt("123");//猜:長的像數值才可以。"相容型別"
		byte b3 = Byte.parseByte("99");
		float f3 = Float.parseFloat("1.23");
		System.out.println(i3);
		System.out.println(b3);
		System.out.println(f3);
		//不是每個String都能轉成數值,不相容的不行
//		int i4 = Integer.parseInt("memeda");//java.lang.NumberFormatException: For input string: "memeda"
		
		
		//D:通過valueOf(基本型別/String)-->獲取一個包裝類的物件型別
		Integer i4obj = Integer.valueOf(100);
		Integer i5obj = Integer.valueOf("105");//猜:長的像數值才可以。"相容型別"
		System.out.println(i5obj);//?
	
	}
}

 

package com.qf.demo02;

public class Test7Character {

	public static void main(String[] args) {
		System.out.println("最大值:"+(int)Character.MAX_VALUE);//65535
		System.out.println("最小值:"+(int)Character.MIN_VALUE);//0
		
		//構建一個包裝類的物件
		Character c1 = new Character('a');//物件
		char c2 = '*';//基本型別
		
		//判斷給定的字元,是否是數字:0-9
		System.out.println(Character.isDigit(c2));//boolean
		//判斷給定的字元,是否是字母[a-zA-Z]
		System.out.println(Character.isLetter(c2));//boolean
		
		//判斷是否是小寫字母
		System.out.println(Character.isLowerCase('A'));//false
		//判斷是否是大寫字母
		System.out.println(Character.isUpperCase('A'));//true
		
		
		//將大寫字母,轉為小寫字母
		System.out.println(Character.toLowerCase('A'));
		//將小寫字母,轉為大寫字母
		System.out.println(Character.toUpperCase('*'));
	}

}

2. 裝箱和拆箱

package com.qf.demo02;

import java.util.Arrays;

public class Test8Auto {

	public static void main(String[] args) {
		int i = 10;
		
		
		Integer i2obj = new Integer(i);
		Integer i3obj = Integer.valueOf(i);
		
		//jdk1.5之後,自動裝箱和拆箱
		
		Integer i4obj = 10;//自動裝箱,將基本型別,直接賦值給包裝類的物件。

		int j = i4obj;//自動拆箱,將包裝類的物件的值,直接賦值給一個基本資料型別。
		
		//陣列,儲存8個基本型別的資料。?
		//資料型別統一:
		byte b1 = 10;
		short s1 = 20;
		int i1 = 30;
		long l1 = 40L;
		float f1 = 1.23f;
		double d1 = 2.34;
		char c1 = 'a';
		boolean bb1 = true;
		
		
		Object[] arr = new Object[8];//?儲存神馬的資料
		System.out.println(Arrays.toString(arr));
		arr[0] = b1;//byte-->Byte(自動裝箱)-->Object類(向上轉型)
		arr[1] = s1;//short-->Short(自動裝箱)-->Object類(向上轉型)
		arr[2] = i1;//int --> Integer --> Object
		arr[3] = f1;
		arr[4] = d1;
		arr[5] = c1;
		arr[6] = bb1;
		arr[7] = l1;
		
		for(Object obj:arr){
			System.out.println(obj.toString());
		}
		
		System.out.println("-----------");
		int i2 = (int)arr[2];//Object-->Integer -->int
		System.out.println(i2);
		int i3 = (Integer) arr[2];//Object -->Integer
		System.out.println(i3);
		
		
		
	}

}
package com.qf.demo02;

public class Test9 {

	public static void main(String[] args) {
		//Number:Byte,Short,Integer,Long,Float,Double
		//快取資料:256個物件,來包裝對應的數值
		/*
		 * [-128,127]
		 * 包裝類的物件:-128,127,包裝類中已經建立好了現成的,用就完了
		 */
		
		Integer i1 = 100;
		Integer i2 = 100;
		System.out.println(i1 == i2);//地址,true
		
		Integer i3 = 200;
		Integer i4 = 200;
		System.out.println(i3 == i4);//false
	}

}