java基礎回顧之包裝類

package com.bjpowernode.demo04;
/**
 * 包裝類的作用:
 * 		使編程更加方便
 * @author Administrator
 *
 */
public class Test01 {

	public static void main(String[] args) {

		//調用方法, 只要是引用類型的數據就可以作爲實參
		m1("abc"); 		//實際上是把"abc"在常量池中的引用傳遞給obj參數
		
		m1(123);		//不能把基本類型數據傳遞給obj參數
		/*
		 * 這兒沒有語法錯誤, 是因爲系統把基本類型123先轉換爲了對應的包裝類對象, 再把包裝類對象的引用傳遞給形參obj
		 */
	}
	//obj是Object類型的引用, obj參數保存的是對象的引用(地址)
	public static void m1( Object  obj) {
			
	}

}

package com.bjpowernode.demo04;
/**
 * 包裝類的構造方法
 * 		1) 根據基本類型創建包裝類對象
 * 		2) 根據字符串 創建包裝類對象
 * @author Administrator
 *
 */
public class Test02 {

	public static void main(String[] args) {
		// 1) 根據基本類型創建包裝類對象
		Integer i1 = new Integer(123);
		Double dd1 = new Double(45.78);
		Boolean bb1 = new Boolean(true);

		//2) 根據字符串 創建包裝類對象
		Integer i2 = new Integer("456123");
		System.out.println( i2 );
		//注意, 根據字符串創建包裝類對象時, 字符串要符合數字的格式
//		i2 = new Integer("adfasf");   	//java.lang.NumberFormatException
//		i2 = new Integer("3.14");		// java.lang.NumberFormatException
		
		Double dd2 = new Double("45.78");
//		dd2 = new Double("adsf");		//java.lang.NumberFormatException:
		dd2 = new Double("456");
		
		//布爾類型比較特殊, 如果是"true"字符串會轉換爲true, 其他的字符串都轉換爲false
		Boolean bb2 = new Boolean("true");
		System.out.println( bb2 );
		bb2 = new Boolean("trasdfaffdue");
		System.out.println( bb2 );
		bb2 = new Boolean( null );
		System.out.println( bb2 );
	}

}

package com.bjpowernode.demo04;
/**
 * 常用字段
 * @author Administrator
 *
 */
public class Test03 {

	public static void main(String[] args) {
		// 
		System.out.println( Integer.SIZE); 			//32
		System.out.println( Integer.BYTES);			//4
		System.out.println( Integer.MIN_VALUE);		//-2147483648
		System.out.println( Integer.MAX_VALUE);		//2147483647
		System.out.println( Integer.TYPE);			//int
		
		System.out.println( Boolean.TYPE);
		System.out.println( Boolean.TRUE);
		System.out.println( Boolean.FALSE);

		System.out.println( Double.NaN);
		System.out.println( Double.POSITIVE_INFINITY);
		System.out.println( Double.NEGATIVE_INFINITY);
		
		System.out.println( 10 / 0.0 ); 		//Infinity, 無窮大
		System.out.println( -10 / 0.0 ); 		//-Infinity, 負無窮大
		System.out.println( 0 / 0.0 ); 		//NaN, Not a Number
		
	}

}

package com.bjpowernode.demo04;
/**
 * 包裝類的常用操作
 * @author Administrator
 *
 */
public class Test04 {

	public static void main(String[] args) {
		//1)包裝類對象
		Integer i1 = new Integer(456);
		Integer i2 = new Integer("123");
		
		//2) 從Number繼承的方法, 可以把包裝類對象轉換爲基本類型
		byte  bb = i2.byteValue();
		double dd = i1.doubleValue();
		System.out.println( bb );
		System.out.println( dd );
		bb = i1.byteValue();		//只把最後一個字節保存到bb變量中
		System.out.println( bb );   //-56
		
		//3)compareTo(Integer anotherInteger)  如果第一個對象大 返回正數, 參數對象大返回負數,相等返回0
		//Comparable<T>接口,作用是比較當前對象與參數對象的大小 , 一個類實現了該接口,需要重寫compareTo()
		//Comparable<T>接口中的<T>是泛型(把數據類型當作參數), 指定參數對象的數據類型
		//Integer對象比較大小是根據value字段的值比較大小
		//每個包裝類都有一個value字段, 保存對應的基本類型的值
		System.out.println( i1.compareTo(i2) );  	//1
		Boolean b1 = new Boolean(true);
		Boolean b2 = new Boolean("afda");
		System.out.println( b1.compareTo(b2));  	//1
		
		//4)equals(Object obj) ,判斷兩個對象的是否相等,根據基本類型的value值判斷是否相等
		System.out.println( i1.equals(i2) );
		System.out.println( b1.equals(b2) );
		
		//5)parseInt(String s) 可以把字符串轉換爲基本類型的數據
		int xx = Integer.parseInt("7894");
		System.out.println( xx );
//		xx = Integer.parseInt("7.894");  	// java.lang.NumberFormatException: 		
		double dd3 = Double.parseDouble("45.123");
		boolean flag = Boolean.parseBoolean("qerreqe");
		System.out.println( flag ); 		//false
		
		//6)把整數轉換爲二進制,八進制,十六進制
		System.out.println( Integer.toBinaryString(100));
		System.out.println( Integer.toOctalString(100));
		System.out.println( Integer.toHexString(100));
		
		//7)valueOf(int i) /valueOf(String s) 把基本類型/字符串 轉換爲包裝類對象
		i1 = Integer.valueOf( 258);
		i2 = Integer.valueOf("369");
		
		dd3 = Double.valueOf(3.14);
		dd = Double.valueOf("456.789");
		
	}

}

package com.bjpowernode.demo04;
/**
 * int , String, Integer相互轉換
 * @author Administrator
 *
 */
public class Test05 {

	public static void main(String[] args) {
		int num = 123;
		//1) int-->String
		String text = "" + num; 		//字符串與基本類型連接,先把基本類型轉換爲字符串再連接
										//			 "" + "123"
		text = String.valueOf(num);
		text = Integer.toString(num);
		
		//2) String --> int
		num = Integer.parseInt(text);
	
		//3) int --> Integer
		Integer i1 = new Integer(num);
		i1 = Integer.valueOf(num);
		i1 = num;						//Java可以自動的把基本類型轉換爲包裝類對象
		
		//4) Integer--> int
		num = i1.intValue();
		num = i1;					//Java可以自動的把包裝類對象轉換爲基本類型數據
		
		//5) Integer-->String
		text = i1.toString();
		 
		//6) String-->Integer
		i1 = new Integer(text);
		i1 = Integer.valueOf(text);
	}

}

package com.bjpowernode.demo04;
/**
 * 裝箱
 * 		把基本類型轉換爲包裝類對象
 * 拆箱
 * 		把包裝類對象轉換爲基本類型
 * 在Java中,可以自動的裝箱與拆箱
 * @author Administrator
 *
 */
public class Test06 {

	public static void main(String[] args) {
		Integer i1 = 456; 		//自動裝箱 
		Integer i2 = 456;		//根據基本類型456創建一個包裝類對象
		System.out.println( i1 == i2 ); 		//false
		System.out.println( i1.equals(i2)); 	//true

		i1 = 123;		//根據基本類型123創建一個包裝類對象
		i2 = 123;
		System.out.println( i1 == i2 ); 		//true 
		/*
		 * Java認爲-128~127之間的整數是最常用的整數
		 * 在這個範圍內的整數自動裝箱後,生成的包裝類對象存儲方法區的共享池中
		 * 	i1 = 123;  會創建一個包裝類對象保存到方法區的常量池中
		 * 	再執行i2 = 123; 時, 就直接把常量池中的包裝對象的 引用賦值給i2
		 */
	
		Long gg1 = 99L;
		Long gg2 = 99L;
		System.out.println( gg1 == gg2 ); 		//true
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章