当前位置: 首页 > 面试题库 >

Java枚举数组的默认值或初始值

贡光明
2023-03-14
问题内容

假设我有一个枚举public enum Day { MONDAY, TUESDAY, ..., SUNDAY },然后实例化一个天数组Day[] days = Day[3];

如何将一天(例如MONDAY)设置为所有“天”的默认值days?如果如上所述进行设置,则所有元素day均为空。我希望通过枚举表现得更像ints和Strings,它们分别初始化为0和“”。


问题答案:

正如其他人所说,枚举是引用类型-它们只是特定类的编译器语法糖。JVM不了解它们。这意味着该类型的默认值为null。当然,这不仅会影响数组-
这意味着类型为枚举的任何字段的初始值也为null。

但是,您不必遍历循环来填充数组,因为有一个库方法可以帮助您:

Day[] days = new Day[3];
Arrays.fill(days, Day.MONDAY);

我不知道这样做有什么 性能上的 好处,但这可以简化代码。



 类似资料:
  • 问题内容: 我们有一个带有枚举字段-的实体,我们想使用JPA注释-为它设置默认值。 但是,当我们将实体保存到数据库时,此字段的值为和。对于布尔字段- 正确的默认值()已保存。 如果改为使用:,则会在保存时得到以下异常: 我们做错了什么?为什么它仅适用于布尔值? 问题答案: 当某些SQL代码在未为emailCommunicationStatus列指定任何值的情况下插入一行时,您所做的工作很有用。在这

  • 根据我的参考,基元类型具有默认值,对象为null。我测试了一段代码。 行将是指向变量的错误,表示,而在给定引用中,将作为默认值。但是,使用下面给定的代码,它将实际打印。 第一个代码可能会出什么问题?类变量的行为是否与局部变量不同?

  • 考虑以下代码 VS2013编译器发出以下警告: 警告C4351:新行为:数组“B::member”的元素将默认初始化1 这里有记载 使用C 11,并应用“默认初始化”的概念,意味着B. part的元素将不会被初始化。 但我认为,成员{}应该执行值初始化,而不是默认初始化。VS2013编译器是否损坏? 8.5美元/6 默认初始化类型为T的对象意味着:-如果T是(可能是cv限定的)类类型(第9条),则

  • 问题内容: 所以我要声明并初始化一个int数组: 说我改为这样做… … 0将按标准输出。另外,如果我这样做: 将按标准输出。那么默认如何初始化我的数组?是否可以安全地假设默认的初始化将数组索引设置为零,这意味着我不必遍历数组并对其进行初始化? 问题答案: Java程序中未由程序员明确设置为所有内容的所有内容都初始化为零值。 对于的引用(任何包含对象的内容)。 对于int / short / byt

  • 问题内容: 如果未将显式值传递给方法,我想用一些默认值初始化方法的参数-像这样: 我得到了错误: 我该如何解决? 问题答案: 这里常见的习惯用法是将默认值设置为一些哨兵值用于此目的,这是典型值,然后您可以检查该值。 您可能还会看到用于哨兵的实例。 后一个版本的优点是可以传递给函数,但有一些缺点(请参见下面@larsmans的评论)。如果您不认为需要将有意义的参数传递给您的方法,那么我建议您使用它。

  • 我的api如下所示: 对于查询,我们只想允许查询枚举中列出的某些属性,如下所示: 我加了 在启动阶段。cs,但这不适用于默认值,我得到以下生成的虚张声势,默认值为0而不是字符串: 如何使默认值显示为字符串?