数据类型
- 基本:8个
- 引用:数组[] ;类class;抽象类abstract;接口interface; 枚举enum ;注解@interface
一、枚举类
一个类中的对象,认为个数是有限且固定的,可以将每一个对象一 一列举出来。
- 试一试若没有枚举类型的时候,如何手动设计 (静态常量 单例模式) Day(类 当做描述星期 7个对象)
private构造方法
public static final属性 = new
例子:
package myenum;
public class MyDay {//描述星期 7个
//类似单例模式的想法
//构造方法私有
private MyDay(){}
//所有对象都是属性
public static final MyDay monday = new MyDay();
public static final MyDay tuesday = new MyDay();
public static final MyDay wednesday = new MyDay();
public static final MyDay thursday = new MyDay();
public static final MyDay firday = new MyDay();
public static final MyDay saturday = new MyDay();
public static final MyDay sunday = new MyDay();
//一般属性 一般方法随便设计
}
测试:
public class Test {
public static void main(String[] args){
MyDay myDay = MyDay.monday;//day类中访问了一个对象 7个
}
}
- JDK1.5版本之后可以直接定义enum类型
- 我们自己定义的enum类型直接默认继承Enum(java.lang包)
- 我们自己定义的enum类型不能再写extends, 但是可以实现
- Enum类型
有两个属性:
name
----->枚举对象的名字name()
获取name属性
ordinal
----->枚举对象在类中罗列的顺序 类似index 也从0开始ordinal()
获取序号
一些常用的方法:
valueOf()
通过给定的name获取对应的枚举对象
values()
获取全部的枚举对象 —> 返回一个数组 Day[]
compareTo()
可以比较两个枚举对象 int
toString()
由于这个方法没有final修饰 可以覆盖(重写)
package myenum;
public enum Day{
//描述了七个当前类的对象
monday,tuesday,wednesday,thursday,friday,saturday,sunday;
}
测试:
public class Test {
public static void main(String[] args){
Day Day = Day.monday;//类中已经new了,无需在new
//day--->枚举类型的对象 默认继承Object
//除了继承自Object类的方法外 还有一些 证明我们自己创建的enum类型 默认继承Enum
//我们自己定义的每一个enum类型 都会默认继承Enum 间接继承Object
}
}
- switch内部判断枚举的应用
package myenum;
import java.util.Scanner;
public class Test {
public static void main(String[] args){
// MyDay myDay = MyDay.monday;//day类中访问了一个对象 7个
//
// Day day = Day.monday;
//day--->枚举类型的对象 默认继承Object
//除了继承自Object类的方法外 还有一些 证明我们自己创建的enum类型 默认继承Enum
//我们自己定义的每一个enum类型 都会默认继承Enum 间接继承Object
// Day d = Day.valueOf("monday");
// System.out.println(d.name()+"--"+d.ordinal());
// Day[] days = Day.values();//获取所有的枚举对象
// for(Day d:days){
// System.out.println(d.name()+"--"+d.ordinal());
// }
//输入一个字符串monday 输出对应的信息
Scanner input = new Scanner(System.in);
System.out.println("请输入一个星期的英文单词:");
String key = input.nextLine();
Day day = Day.valueOf(key);//通过输入的英文单词找到了对应的枚举对象
switch(day){
case monday:
System.out.println("您输入的是星期1");
break;
case tuesday:
System.out.println("您输入的是星期2");
break;
case wednesday:
System.out.println("您输入的是星期3");
break;
case thursday:
System.out.println("您输入的是星期4");
break;
case friday:
System.out.println("您输入的是星期5");
break;
case saturday:
System.out.println("您输入的是星期6");
break;
case sunday:
System.out.println("您输入的是星期7");
break;
default:
System.out.println("出现错误");
}
}
}
- 我们也可以在enum中描述自己的一些属性或方法
必须在enum类中第一行 描述一下枚举的样子 最后需要分号结束;
可以定义自己的属性
类创建的过程中 帮我们创建枚举类型的对象
需要给枚举类型提供对应样子的构造方法 构造方法只能private修饰 可以重载
枚举类中也可以有自己的属性和方法:
public enum Day{
//描述了七个当前类的对象
monday("星期一",1),tuesday("星期二",2),wednesday,thursday,friday,saturday,sunday;
private String name;
private int index;
private Day(){}
private Day(String name,int index){
this.name=name;
this.index=index;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
}