java基础增强
一、jdk1.5的新特性
自动封箱拆箱
封箱:Java自动将原始类型值转换成对应的对象,如将int的变量转换成Integer对象
拆箱:自动将对应的对象转换成原始类型值,将Integer对象转换成int类型值
自动装箱时编译器调用valueOf将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似intValue(),doubleValue()这类的方法将对象转换成原始类型值。
静态导入
static import
如果一个类中的方法全部是使用static声明的静态方法或变量,则可以使用静态导入,在使用导入类的静态资源时,不需要类名.
可变参数
类型... 空格 变量名
可变参数的底层是数组对象,很多事情,编译器给你干了
可变参数必须位于方法参数的最后一个哦
凡是参数是可变参数的,可以直接传数组对象
枚举
enum
public enum EasySingleton{} java枚举底层是继承了java.lang.Enum,可以用在switch中
增强for循环
增强for循环的底部实现其实就是迭代器
语法:for(类型 变量名 : 对象)
反射
获得class类的三种方式
1、Object类中的getclass()
2、类.class
3、Class类的forName()
获得class类之后可以
1、创建对象
2、获取类属性
3、获取类方法
反射的详细api:http://blog.csdn.net/jjfly999/article/details/51226986?locationNum=2&fps=1
二、注解
基础:
1.可以通过 @interface关键字来定义注解,定义注解和定义接口很相似。
2.注解中可以包含属性,可以在注解声明时,在该注解内部声明属性;类似于接口中定义方法;
3.注解的属性必须public,public可以省略,默认就是public.
4.在使用注解时需要指定属性的值(未指定默认值的属性)。也可以在定义属性时使用default指定默认值。指定默认值之后,在使用该注解时,该属性可以指定值,也可以不指定值。
5.注解中属性的类型是有要求,只能是八种基本数据类型、String、枚举类型、Class类型等,或以上类型一维数组。
6.注解的属性中有一个特殊属性,名字叫value属性,如果注解只用一个属性需要被赋值,并且该属性的名字刚好叫value,则属性赋值“value=”可以省略。
7.如果注解的属性是一个数组类型,并且在赋的值中只有一个值,则“{}”可以省略。
进阶:
使用源注解修饰自定义的注解
所谓的源注解指的就是sun定义用来修饰自定义注解的注解。
@Retention:用于指定该Annotation可以保留的域。:SOURCE(源代码级别,给编译器看的)编译器直接丢弃这种策略的注解。
CLASS(class字节码级别)编译器编译后,会将该类注解保留在class文件中,当运行程序时,JVM将不会保留该类注解。
RUNTIME:编译器编译后,会将该类注解保留在class文件中,JVM保留,程序在运行时页存在,所以可以通过反射来获取注解的信息(使用最多)
@Target:指定注解用于修饰哪个成员
ANNOTATION_TYPE 注释类型声明
CONSTRUCTOR 构造方法声明
FIELD 字段声明(包括枚举常量)
LOCAL_VARIABLE 局部变量声明
METHOD 方法声明
PACKAGE 包声明
PARAMETER 参数声明