枚举类
枚举类本质上也是一种类,只不过这个类的对象是有限的、固定的几个,不能让用户随意创建。
星期
性别
月份
积极
三原色
支付方式
线程状态
就职状态
订单状态
开发建议:如果针对于某个类,其实例是确定个数的。则推荐将此类声明为枚举类
若枚举只有一个对象,则可以作为一种单例模式的实现方式
实现方法:
java支持enum关键字类快速定义枚举类型
JDK5.0之前:
1 | public class SeasonTest { |
5.0之后:
1 | enum Season1{ |
Enum常用方法:
1 | //1. toString() 返回的是常量名,可以重写该方法 |
枚举类实现接口的操作:
Case1:枚举类实现接口,在枚举类中重写接口的抽象方法。当通过不同的枚举类对象调用此方法时,执行的是同一个方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31enum Season1 implements Info{
SPRING("Spring", "Flowers"),
SUMMER("Summer", "Sunshine"),
AUTUMN("Autumn", "Wind"),
WINTER("Winter", "Snow");
//2.声明当前类的对象的实例变量
private final String seasonName;
private final String seasonDesc;
//1.私有化构造器
private Season1(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//3.提供实例变量的get
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
public void show() {
}
}Case2:让枚举类的每一个对象来重写接口的抽象方法。这样枚举的每一个对象都可以有不同的重写方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50interface Info{
void show();
}
enum Season1 implements Info{
SPRING("Spring", "Flowers"){
public void show() {
}
},
SUMMER("Summer", "Sunshine"){
public void show() {
}
},
AUTUMN("Autumn", "Wind"){
public void show() {
}
},
WINTER("Winter", "Snow"){
public void show() {
}
};
//2.声明当前类的对象的实例变量
private final String seasonName;
private final String seasonDesc;
//1.私有化构造器
private Season1(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//3.提供实例变量的get
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}
实现一个单例模式
1 | enum GirlFriend{ |
Ex
1 | public class ColorTest { |
注解
Annotation可以像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明。还可以添加一些参数值,这些信息被保存在Annotation的”name=value”对中
注解与注释区别:
注解也可以看做是一种注释。通过使用注解,程序员可以在不改变原有逻辑的情况相爱,在源文件嵌入一些补充信息。但是,注解不同于单行注释和多行注释
- 单行注释和多行注释是给程序员看的。
- 而注解是可以被编译器或其他程序读取的。程序还可以根据注解的不同,做出相应的处理
应用场景
生成文档注释
在编译时进行格式检查(JDK内置的三个基本注解)
跟踪代码依耐性,实现替换配置文件功能
三个常用注解
- @Override:限定重写父类方法,该注解只能用于方法
- @Deprecated:用于表示所修饰的(类、方法)已过时。通常是因为所修饰的结构危险或存在更好的选择。
- @SuppressWarnings:抑制编译器警告
自定义注解
以@SuppressWarnings为参照,进行定义极客。
单元测试
测试分类
黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望值。
白盒测试:需要写代码。关于程序具体的执行流程。
利用JUnit进行测试
说明
正确编写单元测试方法,需要满足
所在的类必须是Public的,非抽象的,包含唯一的无参构造器
@Test标记的方法本身必须是public,非抽象的,非静态的,void无返回值,()无参数的。
包装类
为了让基本数据类型具备引用数据类型变量的相关特征(封装性、继承性、多态性)
基本数据类型
Java针对于八种基本数据类型定义了相应的引用类型:包装类。
基本数据类型转包装类(装箱)
手动装箱
1 | public class WrapperTest { |
自动装箱
1 | public void test2(){ |
包装类转基本数据类型(拆箱)
1 | public class WrapperTest { |
自动拆箱
1 | public void test(){ |
String与基本数据类型、包装类之间的转换
基本数据类型、包装类 转 String
1 | public void test4(){ |
String转基本数据类型
1 | public void test6(){ |
自动装箱时,若数值在缓存对象区间,两个包装类相等。若超出Integer m=128, Integer n=128,此时m不等于n