2, Foreach循环(for(objecto:list))方便遍历数组和集合
3, 枚举
enum Course{
UNIX ("Luxw") {
public void study(){}
},
COREJAVA ("Huxz"){
public void study(){}
};
Public void study();
}
使用:
class test {
Course [] cs=Course.values();
for(Course c:cs){
System.out.println(s.ordinal+s+s.getName())}}
注意的问题:1枚举值之间用逗号隔开,最后一个用分号2枚举中可以有抽象,但必须在枚举值中实现;
4, 泛型 泛型解决集合中不安全性,泛型强制集合中都是一个类型
List<Integer> l=new ArrayList<Integer>();Map<Integer,String> m=newHashMap<Integer,String>();
泛型方法:public static <T> void copy(List<T> l,T[]os){ for(T o:os){l.add(o);}}
<T extendsInteger> <? Extends Integer>
5,反射 类对象,类加载时把类的信息保存在jvm中就会产生一个相应的对象(记录类信息的对象),只要类对象存在则类信息就在
获得类对象应用的三种方式:
①Class c1=ArrayList.class; ②Objectl=new ArrayList();Class c2=l.getClass();
③StringclassName="java.util.ArrayList"; Class c3=Class.forName(className);
Class[] cs=c1.getInterfaces();//获得接口
Class c=Animal.class;
Field[] fs=c.getDeclaredFields();//获得属性的数组
Method[] ms=c.getDeclaredMethods();//获得本类所有公私有的方法,getMethods()获得父类所有公开的方法
Constructor[]cons=c.getDeclaredConstructors();//获得构造方法的数组
Object o2=c.newInstance();//创建类的对象
Method m1=c.getDeclaredMethod("study");//找到方法名是study的方法
m1.setAccessible(true);//设置为可以调用
m1.invoke(o2);//调用m1方法
Methodm2=c.getDeclaredMethod("study", String.class);
m2.setAccessible(true);
m2.invoke(o2,"CoreJava");//调用m2的方法,方法的参数是CoreJava
6,注释,===注释是一种类型(总共有四种类型:类,接口,枚举,注释)
定义注释
如:@Override;
标记:@注释名
单值:@注释名(属性名=属性值)
多值:@注释名(属性1=值1,属性2=值2,......)
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target()
public @interface MyType {
String authorName();
String lastModified();
String bugFixes() default "ok";
}
在类中应用注释:
import java.lang.annotation.*;
@MyType(authorName="hadeslee",lastModified="20061207")
public class Test1 {
/** Creates a new instance of Test1 */
public Test1() {
}
@Deprecated
@MyType(authorName="hadeslee",lastModified="20061207",bugFixes="what")
public void doSth(){
}
这里我定义了一个我自己的注释类,声明方式和声明接口差不多,只不过在 interface前面多了一个@符号.
注释类也可以用注释类注释,如此下去.