1.比较器
Comparable接口 自然排序
@Override
public int compareTo(T t){
//自定义比较规则
//要求: this > t ,返回正整数
// this == t,返回0
// this < t,返回负整数
}
Comparator接口 定制排序
@Override
compare(Object o1, Object o2){}
eg:
Arrays.sort(arr, new Caparator(){
@Override
compare(Object o1, Object o2){
//比较逻辑
}
});
2.System类
exit(int status) 退出程序,0表示正常退出,非0表示非正常退出
gc() 请求垃圾回收器进行垃圾回收
3.枚举类
类的对象只有有限个,确定的
1)自定义枚举类jdk1.5之前
eg:
class Season{
//1声明属性private final
private final String name;
//2私有化类的构造器
private Season(String name){
this.name = name;
}
//3提供当前枚举类的多个对象
public static final Season SPRING = new Season("spring");
public static final Season SUMMER = new Season("SUMMER");
public static final Season AUTUMN = new Season("AUTUMN");
public static final Season WINTER = new Season("WINTER");
//4其他
}
2)enum关键字jdk1.5及之后
//继承了java.lang.Enum,该类重写toString()打印对象名
enum Season{
//1先写有哪些对象,省略修饰符,多个对象之间用逗号
SPRING("spring"),
SUMMER("SUMMER"),
AUTUMN("AUTUMN"),
WINTER("WINTER");
//2声明属性
private final String name;
//3私有化类的构造器
private Season(String name){
this.name = name;
}
//4其他
}
3)Enum类中常用方法
Season[] values() 返回枚举类型的对象数组
//找不到str对应的对象会抛异常:IllegalArgumentException
static Season valueOf(String str) 把字符串转成相应枚举类对象
String toString() 返回枚举类对象常量的名称
4)enum定义的枚举类实现接口
enum Season implements MyInterface{
//1先写有哪些对象,省略修饰符,多个对象之间用逗号
SPRING("spring"){
@Override
public void getDescription(){
//
}
},
SUMMER("SUMMER"),
AUTUMN("AUTUMN"),
WINTER("WINTER");
}
switch(Season season){
case SPRING:
break;
case SUMMER:
break;
}
4.注解Annotation
1)常见Annotation
1文档相关注解
@author @version @since @Description @param
2编译时进行格式检查
@Override @Deprecated(已弃用的) @SuppressWarnings(抑制编译器警告)
3跟踪代码依赖性,实现代码配置功能
2)自定义Annotation
//配合注解的信息处理流程(使用反射)才有意义
public @interface MyAnnotation{
String value() default "hello"; //定义成员,可以定义默认值
}
public @interface MyAnnotation{
String[] value();
}
自定义注解通常会指定Retention和Target两个元注解
3)元注解
jdk提供四种,用于修饰其他Annotation
@Retention
1指定Annotation的生命周期
eg:
@Retention(RetentionPolicy.SOURCE)
public @interface SupperessWarnings{
...
}
2关于RetentionPolicy
public enum RetentionPolicy{
SOURCE, //指定注解将被编译器discard(抛弃,丢弃)
CLASS, //默认行为,将被编译到class文件中,但是运行时不会被加载到内存之中
RUNTIME; //可以被编译到class文件中,被加载到内存之中,可以被反射读取
}
@Target
1用于指定Annotation可以修饰的元素
public @interface Target {
ElementType[] value();
}
2使用实例
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
...
}
3关于Target成员,枚举类ElementType
public enum ElementType{
TYPE, //用于class,interface(包括Annotation),enum
FIELD, //
METHOD,
PARAMETER,
CONSTRUCTOR,
LOCAL_VARIABLE,
ANNOTATION_TYPE,
PACKAGE,
TYPE_PARAMETER, //since 1.8
TYPE_USE; //since 1.8
}
@Documented
1被@Documented标记的Annotation会被javadoc提取为文档
eg:@Deprecated被@Documented标记,Date类的某个构造器被@Deprecated注解,所以在javadoc生成的文档中,Date的某个构造器显示为
@Deprecated
public Date(int year, int month, int day){...}
2被@Documented标记的Annotation需要被@Retention标记为RUNTIME
@Inherited
被@Inherited修饰的Annotation具有继承性
如果某个类被@Inherited修饰的Annotation注解,那么这个类的子类自动拥有此Annotation
4)jdk1.8注解新特性
可重复注解
@Repeatable
类型注解
@Target的枚举类中
Element_Type.TYPE_PARAMETER 表明该注解能写在类型变量的声明语句中
Element_Type.TYPE_USE 表明该注解能写在使用类型的任何语句中
标签:java,name,Season,public,枚举,014,注解,Annotation
From: https://www.cnblogs.com/zhengcg/p/16618416.html