注解
一、什么是注解(Annotation)?
- 不是程序本身,可以对程序做出解释
- 可以被其他程序读取
Annotation的格式:
- 注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:@SupperWarnings(value=“unchecked)
Annotation在哪里使用?
- 可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些数据的访问。
二、内置注解
@Override
定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法打算重写超类中的另一个方法声明。
@Deprecated
定义在java.lang.Deprecated中,此注释可以用于修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。
@SuppressWarnings
定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息。
三、元注解
元注解的作用就是负责注解其他注解,他们被用来提供对其他annotation类型作说明。
- @Target:用于描述直接的适用范围(即被描述的注解可以用在什么地方)
- @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(source<class<runtime)
- @Document:说明该注解将被包含在javadoc中
四、自定义注解
自定义注解格式:@interface+注释名
注解的参数:参数类型+参数名()
注意:注解中的参数没有顺序,无论先写那个参数都可以
反射
java反射机制提供的功能
- 在运行时判断任意一个对象所属的类
- 在运行时构造任意一个类的对象
- 在运行时判断任意一个类所具有的成员变量分方法
- 在运行时获取泛型信息
- 在运行时处理注解
等等
java反射优点和缺点
优点:可以实现动态创建对象和编译,体现出很大的灵活性
缺点:对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们什么要求。这类操作总是慢于执行相同的操作。
java内存
java中的内存分为三个部分
- 堆
- 存放new的对象和数组
- 可以被所有的线程共享,不会存放别的对象引用
- 栈
- 存放基本变量类型
- 引用对象的变量(会存放这个引用在堆里面的具体地址)
- 方法区
- 可以被所有的线程共享
- 包含了所有的class和static变量