枚举

枚举

学枚举之前先想一个问题:
现有一个需求是只能创建一个对象,意思也是说地址要一样如何去编写?

public static void main(String[] args)  {
		//需求只能创建一个对象
		System.out.println(Day.d);
		System.out.println(Day.d.d);
}
public class Day  {
	//需求只能创建一个对象
	public static Day d=new Day();
}

输出:
com.hp.jj.Day@15db9742
com.hp.jj.Day@15db9742

那么如果我要创建多个对象了

	public static void main(String[] args)  {
		//需要创建5个对象时候
		System.out.println(Day.d1);
		System.out.println(Day.d2);
		System.out.println(Day.d3);
		System.out.println(Day.d4);
		System.out.println(Day.d5);
	}
	public class Day  {
			//需要创建5个对象时候
	public static Day d1=new Day();
	public static Day d2=new Day();
	public static Day d3=new Day();
	public static Day d4=new Day();
	public static Day d5=new Day();
	}
输出:
com.hp.jj.Day@6d06d69c
com.hp.jj.Day@7852e922
com.hp.jj.Day@4e25154f
com.hp.jj.Day@70dea4e
com.hp.jj.Day@5c647e05

在这里插入图片描述

enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性。
里面都是多个对象
在Java中,被 enum 关键字修饰的类型就是枚举类型。形式如下:
enum Week{
MONDAY , TUESDAY,WEDNESDAY , THURDAY , FRIDAY ,SATURDAY,SUNDAY ;

//相对应
如果枚举不添加任何方法,枚举值默认为从0开始的有序数值。以 Week 枚举类型举例,它的枚举常量依次为
MONDAY:0,TUESDAY:1,WEDNESDAY:2, THURDAY:3, FRIDAY:4,SATURDAY:5,SUNDAY:6 ;
}

枚举的方法

在enum中,提供了一些基本方法:
name():返回实例名。
ordinal():返回实例声明时的次序,从0开始。
equals() :判断是否为同一个对象。
compareTo():两个枚举的索引差值
此外,java.lang.Enum实现了Comparable和 Serializable 接口,所以也提供 compareTo() 方法。
System.out.println(Week.SATURDAY.ordinal()); //5
System.out.println(Week.MONDAY.name()); //MONDAY
System.out.println(Week.MONDAY.equals(Week.MONDAY)); //true
System.out.println(Week.SUNDAY.compareTo(Week.TUESDAY)); //


输出结果:
5
MONDAY
true
5

枚举的特性

枚举可以添加属性

	public enum Week {
	private static String week="";
	private int id;
	public static String getWeek() {
		return week;
	}
	public static void setWeek(String week) {
		Week.week = week;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getId() {
		return id;
	}
	}
	public static void main(String[] args) {
		Week.TUESDAY.setId(4);
		System.out.println(Week.TUESDAY.getId())
	}
输出结果:
4

枚举可以添加方法

Java 不允许使用 = 为枚举常量赋值
默认继承了java.lang.Enum类
枚举可以实现接口,但是不能继承
构造函数必须是私有的

枚举可以添加普通方法、静态方法、抽象方法、构造方法

public enum Week implements Myinterface {
	//构造函数
	private Week(){
	
	}
	private Week(String name,int id){
		this.id=id;
		System.out.println(name+id);
	}
	//方法
	@Override
	public void eat() {
		System.out.println("11111");
	}
	public static void sleep(){
		System.out.println("睡觉");
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值