1. 程式人生 > >java-泛型陣列,泛型以及列舉

java-泛型陣列,泛型以及列舉

列舉:

java不允許用=為列舉常量賦值,列舉中的構造方法必須為private修飾

列舉中values方法將列舉型別的成員以陣列的形式返回

toString方法能夠返回列舉常量名

ordinal方法返回enumeration宣告中列舉常量的位置

列舉是一個類,可以有自己的屬性和方法並且實現介面,只是所有的列舉都繼承自java.lang.Enum類,所以列舉不能再繼承其他類,列舉中的構造方法必須為private所修飾。

在比較兩個列舉型別的值時,永遠不需要呼叫equals,而直接使用“==”就可以了。


enum Size{SAMLL,MEDIUM,LARGE,EXTRA_LARGE}//1
enmu Size{SMALL("S"),MEDIUM("M"),LARGE("L"),EXTRA_LARGE("XL");}//2

這個宣告定義的型別是一個類,它有四個例項,第一種相當於Size SMALL=new Size();,第二種相當於 Size SMALL=new Size("S");。


switch現在可以用上Enum。

public class ShowEnum{
	enum C{
		CA(3),CB(4),CD(5);
		private int i;
		private C(int i){
			this.i=i;
		}
		public int getI(){
			return i;
		}
	}
	public void doit(C c){
		switch (c) {
		case CA:
			System.out.println(C.CA.getI());
			break;
		case CB:
			System.out.println(C.CB.getI());
			break;
		case CD:
			System.out.println(C.CD.getI());
			break;
		default:
			break;
		}
	}
	
	public static void main(String[] args) {
		ShowEnum s1=new ShowEnum();
		s1.doit(C.CA);
		s1.doit(C.CB);
	}
}

列舉的用處可以參照:點選開啟連結

泛型陣列

  • ArrayList具有自動調節陣列容量的功能,是一個採用型別引數的泛型類。
  • ArrayList<Employee>staff=new ArrayList<Employee>(),宣告和構造一個儲存Employee物件的陣列列表,java7後,右邊的型別引數可以省去。
  • 使用add方法將元素新增到陣列列表中,如果陣列已經滿了,陣列列表就將自動地建立一個更大的陣列,並將所有的物件從較小的陣列拷貝到較大的陣列中
  • 如果已經清楚知道陣列可能儲存的元素數量,可以呼叫ensureCapacity(XXX),這個方法將分配XXX分物件的內部陣列。
  • size方法返回陣列列表中元素數目,等價於陣列.length。
  • 一旦確認陣列列表的大小不再發生變化,可以呼叫trimToSize方法,該方法將儲存區域的大小調整為當前元素數量所需要的儲存空間數目。垃圾回收器將回收多餘的儲存空間。
  • get和set方法實現訪問或改變陣列元素的操作,使用add方法為陣列新增新的元素,而不使用set方法,因為它只能替換陣列中已經存在的元素內容。

包裝器與自動裝箱

  • 所有的基本型別都有一個與之對應的類,這些類稱為包裝器,物件包裝器類是不可變的,一旦構造了包裝器,就不允許更改包裝在其中的值,同時,物件包裝器類還是final,因此不能定義他們的子類。
  • 在ArrayList<Integer>中,呼叫list.add(x)會自動變換成list.add(Integer.valueOf(x))這種變換稱為自動裝箱。
  • 將一個Integer物件賦給一個int值時,將會自動的拆箱:int n=list.get(x)會被翻譯成 int n=list.get(x).intValue().
  • 裝箱和拆箱是編譯器認可的,而不是虛擬機器。編譯器在生成類的位元組碼時,插入必要的方法呼叫。虛擬機器只是執行這些位元組碼