IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> java枚举的定义和使用 -> 正文阅读

[PHP知识库]java枚举的定义和使用

枚举的定义和使用

  1. 枚举不能继承
  2. 枚举不能被继承

定义枚举

enum enumName

代码示例

public enum Language {
    Java,Php,C,Golang,Dart,Flutter
}

代码测试使用

public static void main(String[] args) {
    Language lang;
    lang = Language.Java;

    switch (lang){
        case C:
            System.out.println("C");
            break;
        case Golang:
            System.out.println("go");
            break;
        default:
            System.out.println("other");
    }

    Language[] ll = Language.values();
    System.out.println(ll.length);
    for(Language l : ll){
        System.out.println(l);
    }
}

枚举的其他作用

  1. 枚举是类类型
  2. 枚举不能使用new 关键字
  3. 提供构造函数
  4. 添加实例变量
  5. 添加方法
  6. 实现接口

枚举构造器

先看代码示例

public enum Language {
    Java(1),Php,C(2),Golang(3),Dart(5),Flutter;

    int sort = 1;

    Language(){
        this.sort = 100;
    }

    Language(int sort){
        this.sort = sort;
    }

}

代码测试

 Language[] ls = Language.values();
    for(Language l : ls){
        System.out.println(l + ":\t"+ l.sort);
    }

输出

Java:	1
Php:	100
C:	2
Golang:	3
Dart:	5
Flutter:	100

从以上代码和结果可以看出,要想实现 ,Dart(5),Flutter;这种方式需要有两个构造器,一个有参,一个没有参。没有参的构造器会默认使用默认值

构造器扩展

代码

public enum Language {
    Java(1),Php,C(2),Golang("go语言"),Dart(5),Flutter,C1("C++",2),Objectc(MainTest.mm);

    int sort ;
    String name;
    Map<String,Object> m;

    Language(){
        this.sort = 100;
    }

    Language(int sort){
        this.sort = sort;
    }

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

    Language(String name,int sort){
        this.name = name;
        this.sort = sort;
    }

    Language(Map<String,Object> m){
        this.m = m;
    }

}

测试类

public class MainTest {

static Map<String,Object> mm = new HashMap<>();

static{
    mm.put("m1",12334);
    mm.put("m2",new int[]{1,2,34,});
    mm.put("m3",true);
}

测试代码

 Language[] ls = Language.values();

    for(Language l : ls){
        System.out.println(l + ":\t"+ l.sort + "\t" + l.name + "\t" + l.m);
    }

测试输出

Java:	1	null	null
Php:	100	null	null
C:	2	null	null
Golang:	0	go语言	null
Dart:	5	null	null
Flutter:	100	null	null
C1:	2	C++	null
Objectc:	0	null	{m1=12334, m2=[I@1e127982, m3=true}

构造函数中没有的参数会默认null,根据定义的类型会设置不同的数据

枚举自定义方法

与类形同

举例:

public  void test(){
    System.out.println("language");
   }

测试

Language java = Language.Java;
        java.test();

枚举中的方法

枚举默认继承Enum类

final int ordinal() 检索序数值

Language[] ls = Language.values();

    for(Language l : ls){
        System.out.println(l + "\t" + l.ordinal());
    }

输出结果

Java	0
Php	1
C	2
Golang	3
Dart	4
Flutter	5
C1	6
Objectc	7

final int compareTo(enum-type e)
测试代码

 	 Language java = Language.Java;
    Language c = Language.C;
    Language f = Language.Flutter;
    System.out.println(java.compareTo(c));
    System.out.println(f.compareTo(c));

输出结果

-2
3

从以上结果可以看出,如果在前返回为负数,在后返回为正数,位置为,从当前数据为0开始的第n个元素就是目标元素

equals 比较是否相等

Enum 的方法
public final boolean equals(Object other) {
return this==other;
}

可以看出其中还是使用的 “==”,而且不允许被重写

枚举equals的比较

   Language java = Language.Java;
    Language java1 = Language.Java;
    Language f = Language.Flutter;

    System.out.println(java.equals("Java"));
    System.out.println(java1.equals(java));
    System.out.println(f.equals(java));
     System.out.println(java == java1 );
    System.out.println(java == f );

输出结果

false
true
false
true
false

最后的联系,快速答题器

public class QuickAnswer {

public static void main(String[] args) {
    answer(ask());
    answer(ask());
    answer(ask());
    answer(ask());
    answer(ask());
    answer(ask());
    answer(ask());
    answer(ask());
}

public static Answer ask(){
    Random r = new Random();
    int num = (int)(100 * r.nextDouble());

    if(num <15)
        return Answer.MAYBE;
    if(num <30)
        return Answer.NO;

    if(num < 60)
        return Answer.Yes;
    if(num < 75)
        return Answer.LATER;
    if(num<98)
        return Answer.SOON;

    return Answer.NEVER;
}

public static void answer(Answer answer){
    switch (answer){
        case NEVER:
            System.out.println("naver");
            break;
        case SOON:
            System.out.println("soon");
            break;
        case LATER:
            System.out.println("later");
            break;
        case Yes:
            System.out.println("yes");
            break;
        case NO:
            System.out.println("no");
            break;
        case MAYBE:
            System.out.println("maber");
            break;
        default:
            System.out.println("default");
    }
}

}


enum Answer{
NO,Yes,MAYBE,LATER,SOON,NEVER
}
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:05:46  更:2021-09-14 13:08:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:19:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码