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().
  • 装箱和拆箱是编译器认可的,而不是虚拟机。编译器在生成类的字节码时,插入必要的方法调用。虚拟机只是执行这些字节码


猜你喜欢

转载自blog.csdn.net/qq_40866897/article/details/79372959