首页 > 编程语言 >Java中枚举的学习

Java中枚举的学习

时间:2024-10-08 18:33:14浏览次数:6  
标签:Java 常量 学习 枚举 EnumMap 使用 public

枚举


目录

枚举的定义

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

声明枚举

示例

enum Color 
{ 
    RED, GREEN, BLUE; 
} 

具体示例

enum Color 
{ 
    RED, GREEN, BLUE; 
} 
  
public class Test 
{ 
    // 执行输出结果
    public static void main(String[] args) 
    { 
        Color c1 = Color.RED; 
        System.out.println(c1); 
    } 
}

枚举类

EnumMap类

EnumMap 是一个用于存储 key 为枚举类型的 map,底层使用数组实现(K,V 双数组)。下面是其继承结构:

public class EnumMap<K extends Enum<K>, V> extends AbstractMap<K, V>
    implements java.io.Serializable, Cloneable

从上面的继承结构上可以看出 EnumMap 的 key 必须是一个枚举类型,而 value 没有限制。

EnumSet类

见集合中set接口中EnumSet介绍

枚举使用场景

Java中的枚举(Enum)是一种特殊的类,它用于表示一组固定的常量。枚举提供了比传统常量(如使用public static final修饰的变量)更为类型安全、易读、易维护的方式。以下是Java中枚举的一些常见使用场景:

  1. 替代整型常量
    在传统的Java编程中,经常会使用整型常量来表示一组固定的值,比如季节、星期几等。使用枚举可以更清晰地表达这些常量的意图,并防止意外的整数值赋值。

  2. 定义枚举的行为
    枚举可以包含方法和字段,这为枚举类型的实例提供了附加的行为和状态。比如,可以为不同的季节定义不同的温度范围。

  3. 在switch语句中使用
    枚举在switch语句中特别有用,因为它们只包含固定的常量,所以可以避免意外的值导致的问题。

  4. 集合框架中使用
    枚举实例可以用作集合框架中的元素,例如SetListMap的键。因为枚举是final的,它们作为集合的元素时提供了不变性。

  5. 线程安全单例
    枚举在Java中提供了创建线程安全单例模式的最佳方式。因为枚举实例在JVM中是唯一的,且枚举的构造器默认是私有的,所以它们自然是线程安全的。

  6. 替代String常量
    在很多情况下,字符串常量用于表示固定的选项,如数据库中的枚举类型字段。在Java代码中直接使用枚举可以更安全、更清晰地表示这些选项。

枚举的使用使得代码更加清晰、易于理解和维护,是Java中非常强大的特性之一。

标签:Java,常量,学习,枚举,EnumMap,使用,public
From: https://www.cnblogs.com/BingBing-8888/p/18452273

相关文章

  • 了解final关键字在Java并发编程领域的作用吗?
    在Java并发编程领域,final关键字扮演着一个至关重要的角色。虽然很多同学熟悉final用于修饰变量、方法和类的基本用法,但其在并发环境中的应用和原理却常常被忽视。final关键字不仅仅是一个简单的修饰符,它在多线程编程中确保对象状态的可见性和不变性,这对于构建线程安全的应用至关重......
  • 2024年华为OD笔试机试E卷- 补种未成活胡杨 (java/c++/python)
    华为OD机试E卷2024真题目录(java&c++&python)本人习惯先看输入输出描述,可以明确知道哪些数据已知,需要去得到什么结果,再代入更有目的性地阅读题干内容,快速理解,所以把输入输出描述放在前面,你可以试下这样阅读对你是否有帮助。输入描述N总种植数量1≤N≤100000M......
  • 2024年华为OD笔试机试E卷- 关联子串 (java/c++/python)
    华为OD机试E卷2024真题目录(java&c++&python)本人习惯先看输入输出描述,可以明确知道哪些数据已知,需要去得到什么结果,再代入更有目的性地阅读题干内容,快速理解,所以把输入输出描述放在前面,你可以试下这样阅读对你是否有帮助。输入描述输入两个字符串,分别为题目中描述的......
  • 算法学习--3 (快速排序)
    引言快速排序(QuickSort)是计算机科学中最流行的排序算法之一,它基于“分治”思想,通过递归地将数组分成两部分并分别排序,从而实现排序的目的。与冒泡排序和选择排序等简单算法相比,快速排序在平均情况下的性能非常优越,因此广泛应用于实际场景。本文将详细介绍快速排序的工作原理......
  • 算法学习--4 (插入排序)
    引言插入排序(InsertionSort)是一种简单且直观的排序算法,常用于小规模数据的排序。它的工作原理与人类排序扑克牌的方式类似,每次将一个元素插入到已经排好序的部分,直到所有元素都插入完成。本文将介绍插入排序的原理、实现代码、时间复杂度分析以及优缺点。插入排序的基本原......
  • JavaScript数组合并方法(concat()函数)
    在JavaScript中,concat方法用于连接两个或多个数组,并返回一个新数组。这不会改变现有的数组,而是返回一个包含了连接元素的新数组。解法1:基本的concat使用方法letarray1=[1,2,3];letarray2=[4,5];letarray3=array1.concat(array2);console.log(array3);//输......
  • 如何学习大数据 (学习路线)
    学习大数据是一个广泛的过程,需要从概念、工具、技术栈到实战项目逐步深入。以下是一条系统的学习路径,帮助你逐步掌握大数据领域的关键知识和技术。学习路径1.理解大数据的基本概念和原理在正式学习大数据技术之前,先了解一些基础的概念和理论,以便建立对大数据的全面理解......
  • 更改JAVA_HOME 环境变量 不会生效 还是访问更改之前的JAVA版本 问题
    最近遇到一个问题,更改JAVA_HOME路径从jdk版本改成jdk1.8版本但是使用java-version版本还是显示17版本这可以确定是环境变量配置的问题,我在path中看到一个叫做C:\ProgramFiles\CommonFiles\Oracle\Java\javapath的配置可以看到这个目录下放的是java的启动文件,并且......
  • JavaWeb婚恋交友服务系统
    本系统采用Eclipse2022作为开发工具,MySql8.0作为数据库,并运用Java编程语言和Web、JavaScript、Vue、Html5+Css3等技术搭建B/S架构的网站。它包括两个主要功能模块:前台和后台。前台模块实现了用户注册登录、个人信息管理、发布个人信息、留言、报名线下活动、支付活动费用、......
  • React学习起始
    一、准备工作react是一个用于构建用户界面的JavaScript库脚手架安装:npxcreate-react-app(脚手架名称)react-basic(包名)--------等同于maven构建项目的性质启动项目:yarnstartornpmstart注:全局安装缺点:太久没初始化项目,就得重新装 二、基本使用1导包2创建元素3渲染元......