Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';“这是”的用法;“枚举”;在爪哇?_Java_Enums - Fatal编程技术网

Java 什么';“这是”的用法;“枚举”;在爪哇?

Java 什么';“这是”的用法;“枚举”;在爪哇?,java,enums,Java,Enums,所以我研究了这个“enum”类型,对我来说它有点像一个美化的数组/ArrayList/List。它到底有什么用 枚举是一种安全类型,因此无法在运行时分配新值。此外,您还可以在switch语句(如int)中使用它。Enum作为一种固定数量的常量,至少可以用于两种用途 常数 public enum Month { JANUARY, FEBRUARY, ... } 这比创建一组整数常量要好得多 创建一个单件 public enum Singleton { INSTANCE /

所以我研究了这个“enum”类型,对我来说它有点像一个美化的数组/
ArrayList
/
List
。它到底有什么用

枚举是一种安全类型,因此无法在运行时分配新值。此外,您还可以在switch语句(如int)中使用它。

Enum作为一种固定数量的常量,至少可以用于两种用途

常数

public enum Month {
    JANUARY, FEBRUARY, ...
}
这比创建一组整数常量要好得多

创建一个单件

public enum Singleton {
    INSTANCE

   // init
};
您可以使用enum做一些非常有趣的事情,看看

另外,请看一下枚举是为定义的一组contant提供易于记忆的名称(也可以选择使用一些有限的行为)的基础

您应该使用枚举,否则将使用多个静态整数常量(例如,
公共静态int角色\u ADMIN=0
血液类型\u AB=2


使用枚举而不是这些枚举的主要优点是类型安全、在尝试使用错误值时编译类型警告/错误以及为相关的“常量”提供名称空间。此外,它们更易于在IDE中使用,因为它也有助于代码的完成

枚举类型是其字段由一组固定常量组成的类型。常见的示例包括指南针方向(北、南、东和西的值)和一周中的几天

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
需要表示一组固定常量时,应随时使用枚举类型。这包括自然枚举类型,例如太阳系中的行星,以及在编译时知道所有可能值的数据集,例如菜单上的选项、命令行标志等等

下面是一些代码,演示如何使用上面定义的日枚举:

public class EnumTest {
    Day day;

    public EnumTest(Day day) {
        this.day = day;
    }

    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY:
                System.out.println("Mondays are bad.");
                break;

            case FRIDAY:
                System.out.println("Fridays are better.");
                break;

            case SATURDAY: case SUNDAY:
                System.out.println("Weekends are best.");
                break;

            default:
                System.out.println("Midweek days are so-so.");
                break;
        }
    }

    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();
    }
}
输出为:

星期一不好。
周中的日子一般。
星期五不好 更好。
周末最好。
周末最好。

Java编程语言枚举类型比其他语言中的枚举类型强大得多。枚举声明定义了一个类(称为枚举类型)。枚举类主体可以包括方法和其他字段。编译器在创建枚举时会自动添加一些特殊方法。例如,它们有一个静态值方法,该方法返回一个数组,该数组按声明的顺序包含枚举的所有值。此方法通常与for each构造结合使用,以迭代枚举类型的值。例如,下面行星类示例中的代码迭代太阳系中的所有行星

for (Planet p : Planet.values()) {
    System.out.printf("Your weight on %s is %f%n",
                      p, p.surfaceWeight(mass));
}
除了属性和构造器外,Planet还提供了一些方法,允许您检索每个星球上某个对象的表面重力和重量。下面是一个示例程序,它可以测量你在地球上的体重(以任何单位表示),并计算和打印你在所有行星上的体重(以相同单位表示):

公共枚举行星{
水银(3.303e+23,2.4397e6),
金星(4.869e+24,6.0518e6),
接地(5.976e+24,6.37814e6),
火星(6.421e+23,3.3972e6),
木星(1.9e+27,7.1492e7),
土星(5.688e+26,6.0268e7),
天王星(8.686e+25,2.5559e7),
海王星(1.024e+26,2.4746e7);
私人最终双质量;//单位为千克
专用最终双半径;//以米为单位
行星(双质量,双半径){
这个质量=质量;
这个半径=半径;
}
私有双质量(){return mass;}
专用双半径(){return radius;}
//通用重力常数(m3 kg-1 s-2)
公共静态最终双G=6.67300E-11;
双表面整体性(){
返回G*质量/(半径*半径);
}
双曲面灯光(双质量){
返回其他质量*表面间隙();
}
公共静态void main(字符串[]args){
如果(args.length!=1){
System.err.println(“用法:JavaPlanet”);
系统退出(-1);
}
双倍重量=double.parseDouble(args[0]);
双质量=土壤重量/土壤表面完整性();
对于(行星p:Planet.values())
System.out.printf(“您在%s上的重量是%f%n”,
p、 p.表面光(质量);
}
}
如果从命令行运行参数为175的Planet.class,则会得到以下输出:

$java Planet 175
你在水星上的体重是66.107583
你的体重 金星上的体重是158.374842
你在地球上的体重是 175.000000
你在火星上的体重是66.279007
你在木星上的体重是442.847567
你在土星上的体重是186.552719
你的 天王星的重量是158.397260
你在海王星的重量是 199.207413


来源:

如果类应具有固定的可枚举实例数,则使用
枚举
而不是

示例:

  • DayOfWeek
    =7个实例→ <代码>枚举
  • CardSuit
    =4个实例→ <代码>枚举
  • Singleton
    =1个实例→ <代码>枚举

  • 产品
    =实例数量可变→ <代码>类别
  • 用户
    =实例数量可变→ <代码>类别
  • Date
    =实例数量可变→ <代码>类别

Java编程语言
枚举
比其他语言中的对应语言功能强大得多,它们只不过是美化的整数。新的枚举声明定义了一个完整的类(称为枚举类型)。除了解决java 5.0之前使用的以下int-Enum模式存在的所有问题(
非类型安全、无命名空间、脆性和打印值不具信息性
):

public static final int seasure\u WINTER=0

它还允许您向枚举类型t添加任意方法和字段
public enum Planet {
    MERCURY (3.303e+23, 2.4397e6),
    VENUS   (4.869e+24, 6.0518e6),
    EARTH   (5.976e+24, 6.37814e6),
    MARS    (6.421e+23, 3.3972e6),
    JUPITER (1.9e+27,   7.1492e7),
    SATURN  (5.688e+26, 6.0268e7),
    URANUS  (8.686e+25, 2.5559e7),
    NEPTUNE (1.024e+26, 2.4746e7);

    private final double mass;   // in kilograms
    private final double radius; // in meters
    Planet(double mass, double radius) {
        this.mass = mass;
        this.radius = radius;
    }
    private double mass() { return mass; }
    private double radius() { return radius; }

    // universal gravitational constant  (m3 kg-1 s-2)
    public static final double G = 6.67300E-11;

    double surfaceGravity() {
        return G * mass / (radius * radius);
    }
    double surfaceWeight(double otherMass) {
        return otherMass * surfaceGravity();
    }
    public static void main(String[] args) {
        if (args.length != 1) {
            System.err.println("Usage: java Planet <earth_weight>");
            System.exit(-1);
        }
        double earthWeight = Double.parseDouble(args[0]);
        double mass = earthWeight/EARTH.surfaceGravity();
        for (Planet p : Planet.values())
           System.out.printf("Your weight on %s is %f%n",
                             p, p.surfaceWeight(mass));
    }
}
public static final int SPRING = 0;
public static final int SUMMER = 1;
public static final int FALL = 2;
public static final int WINTER = 2;
public void printSeason(int seasonCode) {
    String name = "";
    if (seasonCode == SPRING) {
        name = "Spring";
    }
    else if (seasonCode == SUMMER) {
        name = "Summer";
    }
    else if (seasonCode == FALL) {
        name = "Fall";
    }
    else if (seasonCode == WINTER) {
        name = "Winter";
    }
    System.out.println("It is " + name + " now!");
}
printSeason(SPRING);
printSeason(WINTER);
printSeason(0);
printSeason(1);
printSeason(x - y);
printSeason(10000);
...
else if (seasonCode == WINTER) {
    name = "Winter";
}
else {
    throw new IllegalArgumentException();
}
System.out.println(name);
public enum Season {
    SPRING("Spring"), SUMMER("Summer"), FALL("Fall"), WINTER("Winter");

    private String name;

    Season(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}
public void printSeason(Season season) {
    System.out.println("It is " + season.getName() + " now!");
}
printSeason(Season.SPRING);
printSeason(Season.WINTER);
printSeason(Season.WHATEVER); <-- compile error
public enum Season {
    SPRING("Spring"), SUMMER("Summer"), FALL("Fall"), WINTER("Winter"), 
    MYSEASON("My Season");

...
     public class NAME
     {
        public static final String THUNNE = "";
        public static final String SHAATA = ""; 
        public static final String THULLU = ""; 
     }

-------This can be replaced by--------

  enum NAME{THUNNE, SHAATA, THULLU}