笔记之1.5新特性

来源:互联网 发布:linux从入门到精通 pdf 编辑:程序博客网 时间:2024/04/29 07:15

增强for循环:

只能取数组和实现Iterable接口的集合元素。

Map结合没有实现iterable接口,要先转SET 然后取。

只适合取数据,不适合赋值

遍历的同时,修改数据,可以使用传统方式。(set)

ListIterator:

迭代中对集合操作,可用。

可变参数:

Public void sum(int...num){}//可传多个参数,传入时,可直接传入数组

可变参数可当数组来用。

细节:

传入参数类型和可变参数类型要相同。

Public void sum(int i,int ...nums)//可变参数一般是最后一个参数

应用:

asList(...)接收的参数时一个对象类型可变参数,如果传入基本数据类型数组,则整个数组会被当成一个对象,记录的是地址。

枚举:

方法需要指定范围的参数时,可用。

枚举是特殊java类,可定义属性,构造函数(必须是私有),方法,可实现接口,可继承抽象类

每个枚举值代表一个实例对象。

如果枚举只有一个枚举值,可当单态来用(构造函数私有,只提供一个实例)

Enum  Grade{

A,B,C,D,E;//相当于5个grade的实例对象

}

给实例封装属性:

Enume  Grade{

Private String valuep;

Private Grade(String value){

Thi.value=value}

A{"100-90"}(public String getLocalValue(){

Return " 优";

}),B{"89-80"}(public String getLocalValue(){//内部类实现抽象类

Return "良";

});

Public String getValue(){

Return value;

}

Public adstract String getLocalValue();//可使用内部类,让每个实例有方法和方法的不同实现

}

String value=Grade.A.getValue();可以获得属性

Enum API:

Name()取得枚举值的名字

Ordinal()是第几个枚举值

valueOf()根据字符串,求枚举值

Values()返回枚举值组成的数组

Switch语句:

除了可接受int ,shor, byte ,char参数外,也可以接受枚举

反射:(用于做框架)

反射的作用:根据字符串,加载类,并解析类有什么方法和属性,构造函数。

加载类:

方式一Class.forName();//参数为完整类名,返回class

方式二 Person.class;

方式三

Person p=new Person();

P.class;

Class  API:

getFiled();//get();

getMehod();//invoke();

getConstructor();//newInstance();

解析出属性,方法,构造函数,可调用Field,Method,Constructor的API

内省:

Intorspector

API:

getBeanInfo()

getPropertyDiscriptor()//beaninfo的方法

getReadMethod(),getWriteMethod()//属性描述器的方法

泛型:

泛型的类型必须是引用类型(对象类型)

使用泛型,两边的类型要一致。两边只有一边使用泛型,也可以。

类上的泛型,可以给方法用,方法的泛型只能给方法用。

作用:数据存入集合中会失去其特性,取出数据时要进行转换,为避免转换异常,可用泛型。

泛型是给编译器用的,把运行时问题提到编译时解决。生成的class文件不带泛型。

应用:

迭代器迭代有泛型的集合

增强for循环迭代泛型集合

泛型方法实现数组元素交换:

Public <T> void swap(T  arr[],int i,int j){

T temp=arr[i];

Arr[i]=arr[j];

Arr[j]=temp;

}

一个数,异或另一个数2次,等于本身。

原创粉丝点击