黑马程序员 java基础知识加强---枚举
2014-01-11 14:25
330 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
使用简单程序完成枚举的功能
使用简单的类实现枚举操作
程序将Color类中的构造方法私有,之后在类中准备了若干个实例化对象,以后如果要取得
Color类的实例,则只能从RED、GREEN、BLUE3个对象中取得,这样就有效地限制了对象 的
取得范围。
以上使用的Color对象指定的范围,是通过一个个常量对每个对象进行编号的。也就是说,
一个个的对象就相当于用常量表示了,所以,按照这个思路也可以直接使用一个接口规定
出一组常量的范围。
使用接口表示一组范围
以上表示出的各个颜色是通过接口指定好的常量范围,与之前相比更加简单。但是这样做也会
存在另外一个问题,如果现在使用如下的代码:
两个颜色的常量相加后形成“3”,这样的结果看起来会令人很困惑,操作很不明确。
定义一个枚举类型
//定义一个Color的枚举类型
public enum Color{ //定义枚举类型
RED,GREEN,BLUE ; //定义枚举的3个类型
}
以上的Color定义出来的枚举类型,其中包含RED,GREEN,BLUE3个数据。可以使用“枚举.variable”的形式
取出枚举中的指定内容。
//取出一个枚举的内容
public class GetEnumContent {
public static void main(String args[]){
Color c = Color.BLUE ; //取出蓝色
System.out.println(c); //输出信息
}
}
枚举类型的数据也可以使用“枚举.values()”的形式,将全部的枚举类型变为对象数组的形式,之后直接使用foreach进行输出。
枚举中的每个 类型也可以使用switch进行判断,但在switch语句中使用枚举类型时,一定
不能在每一个枚举类型值的前面加上枚举类型的类名(如Color.BlUE),否则编译器将会报错。
//使用switch进行判断
public class SwitchPrintDemo {
public static void main(String args[]){
for(Color c : Color.values()){ //枚举.values()表示得到 全部枚举的内容
print(c);
}
}
public static void print(Color color){
switch(color){ //判断每个颜色
case RED:{ //直接判断枚举内容
System.out.println("红颜色");
break ;
}
case GREEN:{ //直接判断枚举内容
System.out.println("绿颜色");
break ;
}
case BLUE:{ //直接判断枚举内容
System.out.println("蓝颜色");
break ;
}
default :{ //未知内容
System.out.println("未知颜色");
break ;
}
}
}
}
上面的Color.values()方法表示取得枚举中的全部内容,返回的是一个对象数组,这是枚举本身支持的一个方法。
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
使用简单程序完成枚举的功能
使用简单的类实现枚举操作
class Color{ public static final Color RED = new Color("红色") ;//定义第一个对象 public static final Color GREEN = new Color("绿色") ;//定义第二个对象 public static final Color BLUE = new Color("蓝色") ;//定义第三个对象 private String name ; private Color(String name){ //构造方法私有化,同时设置颜色的名称 this.setName(name) ; //为颜色的名字赋值 } public String getName() { //取得颜色名称 return this.name; } public void setName(String name) { //设置颜色名称 this.name = name; } public static Color getInstance(int i){ //得到一个颜色,只能从固定的几个颜色中取得 switch (i){ case 1 :{ //返回红色对象 return RED ; } case 2 :{ //返回绿色对象 return GREEN ; } case 3 :{ //返回蓝色对象 return BLUE ; } default:{ //错误的值 return null ; } } } } public class ColorDemo { public static void main(String args[]){ Color c1 = Color.RED ; //取得红色 System.out.println(c1.getName());//输出名字 Color c2 = Color.getInstance(3) ;//根据编号取得名字 System.out.println(c2.getName());//输出名字 } }
程序将Color类中的构造方法私有,之后在类中准备了若干个实例化对象,以后如果要取得
Color类的实例,则只能从RED、GREEN、BLUE3个对象中取得,这样就有效地限制了对象 的
取得范围。
以上使用的Color对象指定的范围,是通过一个个常量对每个对象进行编号的。也就是说,
一个个的对象就相当于用常量表示了,所以,按照这个思路也可以直接使用一个接口规定
出一组常量的范围。
使用接口表示一组范围
public interface Color{ public static final int RED = 1 ; //表示红色 public static final int GREEN = 2 ; //表示绿色 public static final int BLUE = 3 ; //表示蓝色 }
以上表示出的各个颜色是通过接口指定好的常量范围,与之前相比更加简单。但是这样做也会
存在另外一个问题,如果现在使用如下的代码:
public class ColorDemo{ public static void main(String args[]){ System.out.println(Color.RED + Color.GREEN) ; //颜色相加 } }
两个颜色的常量相加后形成“3”,这样的结果看起来会令人很困惑,操作很不明确。
定义一个枚举类型
//定义一个Color的枚举类型
public enum Color{ //定义枚举类型
RED,GREEN,BLUE ; //定义枚举的3个类型
}
以上的Color定义出来的枚举类型,其中包含RED,GREEN,BLUE3个数据。可以使用“枚举.variable”的形式
取出枚举中的指定内容。
//取出一个枚举的内容
public class GetEnumContent {
public static void main(String args[]){
Color c = Color.BLUE ; //取出蓝色
System.out.println(c); //输出信息
}
}
枚举类型的数据也可以使用“枚举.values()”的形式,将全部的枚举类型变为对象数组的形式,之后直接使用foreach进行输出。
//使用foreach输出枚举内容 public class PrintDemo { public static void main(String args[]){ for(Color c : Color.values()){ //枚举.values()表示得到 全部枚举的内容 System.out.println(c); } } }
枚举中的每个 类型也可以使用switch进行判断,但在switch语句中使用枚举类型时,一定
不能在每一个枚举类型值的前面加上枚举类型的类名(如Color.BlUE),否则编译器将会报错。
//使用switch进行判断
public class SwitchPrintDemo {
public static void main(String args[]){
for(Color c : Color.values()){ //枚举.values()表示得到 全部枚举的内容
print(c);
}
}
public static void print(Color color){
switch(color){ //判断每个颜色
case RED:{ //直接判断枚举内容
System.out.println("红颜色");
break ;
}
case GREEN:{ //直接判断枚举内容
System.out.println("绿颜色");
break ;
}
case BLUE:{ //直接判断枚举内容
System.out.println("蓝颜色");
break ;
}
default :{ //未知内容
System.out.println("未知颜色");
break ;
}
}
}
}
上面的Color.values()方法表示取得枚举中的全部内容,返回的是一个对象数组,这是枚举本身支持的一个方法。
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员--Java基础加强--01.枚举常量被使用的时候的内存图
- 黑马程序员--Java基础加强学习笔记之重载和覆写、可变参数、枚举
- <黑马程序员>枚举--(java基础加强1.5新特性)
- 黑马程序员_java基础加强_枚举
- 黑马程序员_java基础加强_静态导入_反射_枚举_注解_内省_泛型_代理
- 黑马程序员 java基础加强——jdk1.5新特性—枚举
- 【黑马程序员】java基础加强_枚举
- 黑马程序员—Java基础加强—(枚举)
- 黑马程序员-JAVA基础加强-枚举
- 黑马程序员-Java基础加强之枚举
- 黑马程序员:基础加强(可变参数、增强for、枚举、javabBean、BeanUtils、注解、泛型)
- 黑马程序员——Java基础知识——泛型、枚举
- 黑马程序员_java基础加强学习之枚举
- 黑马程序员_Java基础加强_枚举
- 黑马程序员-------------(十)Java基础知识加强(一)
- 黑马程序员-------------(十一)Java基础知识加强(二)
- 黑马程序员—Java基础加强学习笔记之枚举&反射
- 黑马程序员_java基础加强-枚举和反射
- 黑马程序员_java_基础加强_静态导入_反射_枚举_注解_内省_泛型
- 黑马程序员—Java基础加强(枚举)