java枚举类型

public class TestEnum {
/*最普通的枚举*/
public enum ColorSelect {
red, green, yellow, blue;
}

/* 枚举也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静态的属性或方法,这一切都象你在一般的类中做的那样. */
public enum Season {
// 枚举列表必须写在最前面,否则编译出错
winter, spring, summer, fall;

private final static String location = "Phoenix";

public static Season getBest() {
if (location.equals("Phoenix"))
return winter;
else
return summer;
}
}
/*还可以有构造方法*/
public enum Temp {
/*通过括号赋值,而且必须有带参构造器和一属性跟方法,否则编译出错
* 赋值必须是都赋值或都不赋值,不能一部分赋值一部分不赋值
* 如果不赋值则不能写构造器,赋值编译也出错*/
absoluteZero(-459), freezing(32),boiling(212), paperBurns(451);

private final int value;
public int getValue() {
return value;
}
//构造器默认也只能是private, 从而保证构造函数只能在内部使用
Temp(int value) {
this.value = value;
}
}

public static void main(String[] args) {
/*
* 枚举类型是一种类型,用于定义变量,以限制变量的赋值 赋值时通过"枚举名.值"来取得相关枚举中的值
*/
ColorSelect m = ColorSelect.blue;
switch (m) {
/*注意:枚举重写了ToString(),说以枚举变量的值是不带前缀的
*所以为blue而非ColorSelect.blue
*/

   case red:
System.out.println("color is red");
break;
case green:
System.out.println("color is green");
break;
case yellow:
System.out.println("color is yellow");
break;
case blue:
System.out.println("color is blue");
break;
}
System.out.println("遍历ColorSelect中的值");
/*通过values()获得枚举值的数组*/
for (ColorSelect c : ColorSelect.values()) {
System.out.println(c);
} 

   System.out.println("枚举ColorSelect中的值有:"+ColorSelect.values().length+"个");

  /*ordinal()返回枚举值在枚举中的索引位置,从0开始*/
  System.out.println(ColorSelect.red.ordinal());//0
  System.out.println(ColorSelect.green.ordinal());//1
  System.out.println(ColorSelect.yellow.ordinal());//2
  System.out.println(ColorSelect.blue.ordinal());//3


  /*枚举默认实现了java.lang.Comparable接口*/
  System.out.println(ColorSelect.red.compareTo(ColorSelect.green));


  System.out.println(Season.getBest());

for(Temp t:Temp.values()){
/*通过getValue()取得相关枚举的值*/
System.out.println(t+"的值是"+t.getValue());
}

}
}
### Java 枚举类型的定义与使用 #### 定义枚举类型Java中,枚举类型通过`enum`关键字定义。枚举类型本质上是一种特殊的类,它可以包含常量、方法和构造函数等[^3]。以下是一个简单的枚举类型定义示例: ```java public enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } ``` 上述代码定义了一个名为`DayOfWeek`的枚举类型,其中包含一周七天的常量。 #### 枚举类型的使用 枚举类型的主要作用是管理一组固定的常量集合[^2]。例如,可以将`DayOfWeek`用于表示一周中的某一天。以下是枚举类型的基本用法示例: ```java public class EnumExample { public static void main(String[] args) { DayOfWeek today = DayOfWeek.MONDAY; System.out.println("Today is " + today); } } ``` #### 枚举类型的常用方法 Java枚举类型提供了多个内置方法,如`values()`、`ordinal()`和`name()`等[^1]。这些方法可以帮助开发者更方便地操作枚举类型。 - `values()`:返回枚举类型的所有常量值。 - `ordinal()`:返回枚举常量的序号(从0开始)。 - `name()`:返回枚举常量的名称。 以下是一个使用这些方法的示例: ```java public class EnumMethodsExample { public static void main(String[] args) { for (DayOfWeek day : DayOfWeek.values()) { System.out.println("Name: " + day.name() + ", Ordinal: " + day.ordinal()); } } } ``` #### 枚举类型实现接口 枚举类型可以实现一个或多个接口[^3]。例如,以下代码展示了如何让枚举类型实现`Comparable`接口: ```java public enum Priority implements Comparable<Priority> { LOW, MEDIUM, HIGH; @Override public int compareTo(Priority other) { return this.ordinal() - other.ordinal(); } } ``` #### 枚举类型用于`switch`语句 枚举类型可以很好地与`switch`语句结合使用[^2]。以下是一个示例: ```java public class EnumSwitchExample { public static void main(String[] args) { DayOfWeek day = DayOfWeek.FRIDAY; switch (day) { case MONDAY: System.out.println("Start of the week."); break; case FRIDAY: System.out.println("End of the work week."); break; default: System.out.println("Another day."); } } } ``` #### 枚举类型的注意事项 - 枚举类型的常量是单例的,不能通过`new`关键字创建实例。 - 枚举类型可以定义构造函数、字段和方法,但其构造函数必须是私有的[^3]。 ### 示例代码 以下是一个综合示例,展示如何定义和使用带有字段和方法的枚举类型: ```java public enum Planet { MERCURY(3.303e+23, 2.4397e6), VENUS(4.869e+24, 6.0518e6), EARTH(5.976e+24, 6.37814e6); private final double mass; // 千克 private final double radius; // 米 Planet(double mass, double radius) { this.mass = mass; this.radius = radius; } public double getMass() { return mass; } public double getRadius() { return radius; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值