首页 > 编程语言 >Java枚举简单介绍

Java枚举简单介绍

时间:2022-08-25 19:14:28浏览次数:91  
标签:ColorEnum Java 枚举 static 简单 类型 values public

枚举

1、枚举简介

枚举,是java中的一种比较特殊的class,它继承了java.lang.Enum类,也就是说在枚举类中是不能够继承其他类的。枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中。此外,枚举类型还提供了安全检查功能。枚举类型本质上还是以类的形式存在

以往设置常量,通常将常量放置在接口中,这样在程序中就可以直接使用了,并且该常量不能被修改,因为在接口中定义的常量时,该常量的修饰符为final与static

public interface Color
{
	public static final int RED = 1;
	public static final int GREEN = 2;
    public static final int BLUE = 3;
}

使用枚举定义常量的语法如下:

public enum ColorEnum
{
	RED,
	GREEN,
    BLUE,
}

常量声明 会有一些问题,比如

  1. 类型不安全。比如在一个方法中要求传入形参,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就可以,但是如果是枚举类型的话,那就只能传入枚举类中包含的对象。

  2. 没有命名空间。开发者要在命名的时候以一定的格式来确定这个常量的使用范围,比如是四季的话就是SPRING表示春天,这样另外一个开发者再看这段代码的时候才知道这四个常量分别代表季节。

命名规范:

final常量:使用大写字母命名,并且中间使用下划线进行连接。

enum枚举:使用大写字母命名,并且中间使用下划线进行连接。

public static void doit(ColorEnum c)
{
	switch (c)
	{
		case RED:
			System.out.println("This is RED");
			break;
		case BLUE:
            System.out.println("This is GREEN");
			break;
		case GREEN:
			System.out.println("This is BLUE");
			break;
		default:
			break;
	}
}
 
public static void main(String[] args)
{
	doit(ColorEnum.RED);
}

2 、操作枚举类型成员的方法

方法名称 具体含义 使用方法
values() 该方法可以将枚举类型成员以数组的形式返回 枚举类型名称.values()
valueOf() 该方法可以实现将普通字符串转换为枚举实例 枚举类型名称.valueOf("ABC")
compareTo() 该方法用于比较两个枚举对象在定义时的顺序 枚举对象.compareTo()
ordinal() 该方法用于得到枚举成员的位置索引 枚举对象.ordinal()

(1)values()方法

该方法可以将枚举类型成员以数组的形式返回,也可以通过该方法获取枚举类型的成员。

/**
 * @Author IBing
 * @Date 2022/8/5 21:17
 * @Version 1.0
 */
public class showEnum {
    enum ColorEnum{
        RED,
        BLUE,
        GREEN,
        YELLOW
    }

	public static void main(String[] args) {
        System.out.println("枚举成员有:"+Arrays.toString(ColorEnum.values()));
        System.out.println("=================================");
        for (ColorEnum c: ColorEnum.values()) {
            System.out.println("枚举成员:"+c);
        }
    }
}

执行结果:

(2)valueOf()与compareTo()方法

/**
 * 枚举中valueOf()与compareTo()方法的使用
 * @author pan_junbiao
 */
public class EnumMethodTest
{
    enum ColorEnum
    {
        RED, BLUE, GREEN
    }
 
    // 定义比较枚举类型方法,参数类型为枚举类型
    public static void compare(ColorEnum c)
    {
        // 根据values()方法返回的数组做循环操作
        for (int i = 0; i < ColorEnum.values().length; i++)
        {
            // 将比较结果返回
            System.out.println(c + "与" + ColorEnum.values()[i] + "的比较结果为:" + c.compareTo(ColorEnum.values()[i]));
        }
    }
 
    public static void main(String[] args)
    {
        // 使用valueOf()将字符串转换为枚举实例
        ColorEnum c = ColorEnum.valueOf("BLUE");
        compare(c);
    }
}

执行结果:

说明:调用compareTo()方法返回的结果,正值代表方法中的参数在调用该方法的枚举对象位置之前;0代表两个相互比较的枚举成员的位置相同;负值代表方法中参数在调用该方法的枚举对象位置之后。

(3)ordinal()方法

该方法用于得到枚举成员的位置索引。

public class showEnum {
    enum ColorEnum{
        RED,
        BLUE,
        GREEN,
        YELLOW
    }

    public static void main(String[] args) {

        for (ColorEnum c: ColorEnum.values()) {
            System.out.println("枚举成员 "+ c+" 的位置索引为:"+c.ordinal());
        }
    }

执行结果:

3、使用枚举类型的优势

枚举类型声明提供了一种用户友好的变量定义方法,枚举了某种数据类型所有可能出现的值。总结枚举类型,它具有以下特点:

(1)类型安全。

(2)紧凑有效的数据定义。

(3)可以和程序其他部分完美交互。

(4)运行效率高

标签:ColorEnum,Java,枚举,static,简单,类型,values,public
From: https://www.cnblogs.com/bingshen/p/16625396.html

相关文章

  • java实现压缩zip包
    1packagecom.common.util;23importjava.io.File;45importjava.io.FileInputStream;67importjava.io.FileOutputStream;89import......
  • Java Servlet 入门:问题系列:反射方法参数名获取不到问题:arg0,arg1
    问题:获取反射的方法参数名时,得到arg0,arg1,而不是定义的参数名。示例代码:Parameter[]parameters=methodInfo.getParameters();if(parameters!=null&&parame......
  • java下载word文档docx
    原文链接:https://blog.csdn.net/m0_51496483/article/details/122124567普通的下载功能,不过依然有一个值得关注的重要点……请看到最后!***HTML***按钮就不上了,你开心设计......
  • 图文详解 Java 泛型,写得太好了!
    泛型——一种可以接收数据类型的数据类型,本文将通俗讲解Java泛型的优点、方法及相关细节。一、泛型的引入我们都知道,继承是面向对象的三大特性之一,比如在我们向集合中......
  • 你真的了解java的泛型吗?
    1.java可以声明泛型数组吗?​ 我们都知道在java中声明一个普通数组,但是你知道如何声明一个泛型数组吗?​ 先来看一个简单的例子,Animals是Cat的父类,思考下Animals[]和Cat[......
  • java操作selenium浏览器自动化操作
    seleniumgithubselenium官网各类型浏览器webDriver驱动下载chrome浏览器webDriver驱动下载,注意要与电脑上实际安装的浏览器版本相对应原理说明:java代码直接通过sele......
  • Caused by: java.lang.UnsupportedClassVersionError: com/hfplm/handler/HFEBOMation
    Causedby:java.lang.UnsupportedClassVersionError:com/hfplm/handler/HFEBOMationHandlerhasbeencompiledbyamorerecentversionoftheJavaRuntime(classf......
  • Java 连接 MySQL
    让Java和MySQL连接起来-囧雪诺-博客园 https://www.cnblogs.com/jonsnow/p/6246131.htmlJava连接MySQL需要驱动包,可以下载菜鸟教程提供的 jar包:http://stati......
  • CompletableFuture的简单使用
    日常开发中,我们都会用到线程池,一般会用execute()和submit()方法提交任务。但是当你用过CompletableFuture之后,就会发现以前的线程池处理任务有多难用,功能有多简陋,Completab......
  • 【Java】LambdaStream
    JavaLambdaStreamFactoryimportjava.util.*;importjava.util.stream.*;publicclassLambdaStream{publicstatic<T>Stream<T>of(Spliterator<T>split......