1. 程式人生 > >面試題:Integer和int的區別?在什麼時候用Integer和什麼時候用int

面試題:Integer和int的區別?在什麼時候用Integer和什麼時候用int

/*
 * int是java提供的8種原始資料型別之一。Java為每個原始型別提供了封裝類,Integer是java為int提供的封裝類。int的預設值為0,
 * 而Integer的預設值為null
 * ,即Integer可以區分出未賦值和值為0的區別,int則無法表達出未賦值的情況,例如,要想表達出沒有參加考試和考試成績為0的區別
 * ,則只能使用Integer
 * 。在JSP開發中,Integer的預設為null,所以用el表示式在文字框中顯示時,值為空白字串,而int預設的預設值為0,所以用el表示式在文字框中顯示時
 * ,結果為0,所以,int不適合作為web層的表單資料的型別。
 * 在Hibernate中,如果將OID定義為Integer型別,那麼Hibernate就可以根據其值是否為null而判斷一個物件是否是臨時的
 * ,如果將OID定義為了int型別,還需要在hbm對映檔案中設定其unsaved-value屬性為0。
 * 另外,Integer提供了多個與整數相關的操作方法,例如,將一個字串轉換成整數,Integer中還定義了表示整數的最大值和最小值的常量。

 */

package java基礎題目;

/**
 * 問題:要想表達出沒有參加考試和考試成績為0的區別?我們應該用Integer表示還是用int表示?
 */
public class A2015年6月4日_Integer和int {
	private static int score;
	private static Integer score2;
//	private static boolean ss;
	public static void main(String[] args) {

		System.out.println("int型別的預設值score2:" + score);// 0

		System.out.println("Integer型別的預設值score:" + score2);// null

		/*
		 * if(score==null){//報錯因為score是int型別的不能和null比較
		 * 
		 * }
		 */
//		if(ss==true)
//		score2 = 0;
		if (score2 == null) {
			System.out.println("沒有參加考試!!!");
		} else if (score2 == 0) {
			System.out.println("考試成績為0分!!!");
		} else {
			System.out.println("考試成績為" + score2);
		}
		
		integer();
	}

	public static void integer() {
		String string = "12345";
		Integer i = Integer.parseInt(string);// 把字串解析為Integer型別
		Integer max = Integer.MAX_VALUE;
		Integer min = Integer.MIN_VALUE;
		System.out.println("Integer.parseInt(string)=" + i);
		System.out.println("integer的最大值:"+max+",最小值:"+min);
	}
}