常量接口与枚举的基本用法

常量接口

  1. 用来专门储存公开静态常量的接口
  2. 程序当中,频繁使用到多次的固定值,使用接口保存这个常量
  3. 程序当中,需要有直观的含义,可以使用接口常量
    例子:可以用来表示程序的错误代码,红绿灯状态等。
    注意:接口中的常量是被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()方法作用是将

扫描二维码关注公众号,回复: 12895849 查看本文章
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

猜你喜欢

转载自blog.csdn.net/qq_16733389/article/details/105909554