常量接口
- 用来专门储存公开静态常量的接口
- 程序当中,频繁使用到多次的固定值,使用接口保存这个常量
- 程序当中,需要有直观的含义,可以使用接口常量
例子:可以用来表示程序的错误代码,红绿灯状态等。
注意:接口中的常量是被public static final 所修饰的,同时如果不写,则是隐式存在的。同时在定义常量时必须进行赋值操作。(这是因为被final修饰的结果)
interface Constant {
String LIGHT_Y = "YELLOW";
String LIGHT_G = "GREEN";
String LIGHT_R = "RED";
}
枚举(规定取值范围)
枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 ,它打印出来有自己的名字和顺序(即枚举里的序号)。枚举像一个类,又像一个数组。
Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征:
1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。
2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。
3.Enum默认实现了java.lang.Comparable接口。
4.Enum覆载了了toString方法,因此我们如果调用Color.GREEN.toString()默认返回字符串”GREEN”.
5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“GREEN”)将返回Color.GREEN.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。
6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。
7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类中的下标值,这个顺序根据枚举值声明的顺序而定,这里Color.RED.ordinal()返回1。
基本用法:
enum Color{
YELLOW,RED,GREEN
}
class Test {
public static void main(String[] args) {
System.out.println(Color.GREEN);
}
}
//结果是:GREEN
enum(枚举)中的values()方法作用是将枚举类中的数据变成一个数组,并且返回一个“类名[ ]”的数组。
public class Constatnt {
public static void main(String[] args) {
i nt j = LightColor.RED.ordinal();
System.out.println(j);
Color[] color= Color.values();
for (int i = 0 ; i < color.length;i++) {
System.out.println(color[i]);
}
}
}
//执行结果是将整个枚举类中的常量封装成一个集合然后再遍历:YELLOW,RED,GREEN
enum(枚举)中的valueOf()方法作用是将
public class Constatnt {
public static void main(String[] args) {
Color color = Color.valueOf("RED");
System.out.println(color);
}
}
//执行结果RED
enum(枚举)中的ordinal()中的方法是找出数组的下标。Color.RED.ordinal()。
public class Constatnt {
public static void main(String[] args) {
int index = Color.RED.ordinal();
System.out.println(index);
}
}
//执行结果:1