Java语言程序设计——篇九(2)

news2024/11/18 9:39:25

在这里插入图片描述

     🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿

枚举类型

  • 枚举类型的定义
  • 枚举类型的方法
      • 实战演练
  • 枚举在switch中的应用
      • 实战演练
  • 枚举类的构造方法
      • 实战演练

枚举类型的定义

 [修饰符] enum 枚举类型名
  {
    [public static final]枚举成员;  //只能写在第一行
    其他成员;
    [private]构造方法
    方法
  }
  • 修饰符可以是public、private、internal
  • 枚举类型名有两层含义:一是作为枚举名使用;二是表示枚举成员的数据类型。枚举成员也称为枚举实例或枚举对象。
  • 枚举默认继承自java.lang.Enum类。
  • 创建枚举对象不能使用new( )运算符,而应直接将枚举成员赋值给枚举对象。

枚举类型的方法

  • 每个枚举类型的成员都可以看作是Enum类的实例,这些枚举成员默认被final public static修饰。
  • 访问枚举类型的成员
       枚举名.枚举成员
       枚举名.valueOf( 参数)
  • 因为枚举也是一种类,所以它具有与其他类几乎相同的特性,因此可以定义枚举的属性、构造方法以及方法。
  • 枚举类常用方法
方法说明
public static E[] values( )返回枚举类型的数组,包含了枚举的所有枚举成员
public static E valueOf(String str)返回名称为str的枚举成员
public final int compareTo (E o)返回当前枚举成员与参数枚举成员o在定义时顺序的比较结果
Public final class getDeclaringClass()返回对应的枚举常量的枚举类型的类对象
public final String name( )返回枚举常量的名字
public final int ordinal ( )返回枚举成员在枚举中的序号(0开始)
public String toString( )返回枚举成员的名称

实战演练

【例】定义一个枚举类型,然后输出枚举成员的名称和对应的序号。

enum Direction
{ EAST,SOUTH,WEST,NORTH }
public class EnumDemo{
  public static void main(String[] args)
  {
    Direction dir=Direction.EAST;
	System.out.print(dir);
	for(Direction d:Direction.values())
      System.out.println("序号:"+d.ordinal()+" 的值为"+d.name());
  }
}

在这里插入图片描述

枚举在switch中的应用

  • 枚举类型有一个特别实用的特性,它可以在switch语句中使用。
  • java.time.DayOfWeek是一个枚举类型,其中包括一周的7天,分别为MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY和SUNDAY,序号从0到6。
  • EnumSwitch.java程序在switch结构中使用DayOfWeek枚举。

实战演练

【例】 java.time.DayOfWeek是一个枚举类,一周7天,序号分别是0-6

import java.time.DayOfWeek;
public class EnumSwitch {
	 public static void describe (DayOfWeek day) {
	      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) {
	    	 DayOfWeek firstDay = DayOfWeek.MONDAY;
	         describe (firstDay);
	     DayOfWeek thirdDay = DayOfWeek.WEDNESDAY;
	         describe (thirdDay);
	      DayOfWeek seventhDay = DayOfWeek.SUNDAY;
	         describe(seventhDay); 
	    }
}	

运行结果:
在这里插入图片描述

枚举类的构造方法

  • 枚举的构造方法只是在构造枚举实例值时被调用。每一个枚举实例值都是枚举的一个对象,因此创建每个枚举实例时都需要调用该构造方法。

实战演练

【例】 定义color枚举,包含四种颜色,声明两个private成员变量(name颜色名字、index索引)

package com;
public enum Color {
RED("红色", 1), GREEN("绿色", 2), WHITE("白色", 3), YELLOW("黄色", 4);
	   private String name;
	   private int index;
 	   private Color(String name, int index) {
	       this.name = name;
	       this.index = index;
	   }
 	   public static String getName(int index) {
	       for (Color c : Color.values()) {
	           if (c.getIndex() == index) {
	               return c.name;
	           }
	       }
		return null;
	   }
	   public String getName() {
	       return name;
	   }
	   	  public void setName(String name) {
	       this.name = name;
	   }
	   public int getIndex() {
	       return index;
	   }
	   public void setIndex(int index) {
	       this.index = index;
	   }
	  @Override
	   public String toString() {
	       return this.name + "_" + this.index;
	   }
	   public static void main (String[] args) { 
	      Color c = Color.RED;          // 自动调用构造方法
	      System.out.println(c.toString());	// 输出:1-红色
	  }
	}

}	 	

博主用心写,读者点关注,互动传真情,知识不迷路

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1955641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动控制:带死区的PID控制算法

带死区的PID控制算法 在计算机控制系统中,为了避免控制动作过于频繁,消除因频繁动作所引起的振荡,可采用带死区的PID控制。带死区的PID控制通过引入一个死区,使得在误差较小的范围内不进行控制动作,从而减少控制系统的…

深入源码:解析SpotBugs(1)静态代码分析框架

文章目录 引言SpotBugs概述启动附录 引言 SpotBugs是一个开源的Java静态分析工具,旨在帮助开发人员检测Java代码中的潜在缺陷和漏洞。以下是对SpotBugs的详细解释: SpotBugs概述 定义与功能:SpotBugs是FindBugs的继任者。FindBugs是一个广受…

LInux的基础用法

Linux学习1:LInux的基本功能 读写的权限 读写的权限可以写为:r,w,x 九个权限可以分成三组: user:当前文件所属用户的权限 。 group:与当前文件所属用户同一组的用户权限 。 others:其他用户的权限。 使用…

免费【2024】springboot 编程语言在线学习平台的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

昇思MindSpore 应用学习-RNN实现情感分类-CSDN

RNN实现情感分类 AI代码解析 概述 情感分类是自然语言处理中的经典任务,是典型的分类问题。本节使用MindSpore实现一个基于RNN网络的情感分类模型,实现如下的效果: 输入: This film is terrible 正确标签: Negative 预测标签: Negative输入…

深入分析 Android ContentProvider (七)

文章目录 深入分析 Android ContentProvider (七)ContentProvider 的高级使用和最佳实践1. 高级使用场景1.1. 跨应用数据共享示例:跨应用数据共享 1.2. 动态授权示例:动态授权 1.3. 数据观察与通知示例:内容观察者 2. 最佳实践2.1. 设计合理的…

Linux(虚拟机)的介绍

Linux介绍 常见的操作系统 Windows:微软公司开发的一款桌面操作系统(闭源系统)。版本有dos,win98,win NT,win XP , win7, win vista. win8, win10,win11。服务器操作系统:winserve…

大模型争锋:左手“世界最强” 右手“高性价比”

2020年,OpenAI团队发表论文,正式提出了大模型开发的经验法则Scaling Law,目前它并没有统一的中文名称,大致可以理解为“规模法则”,更通俗地说是“大力出奇迹”。2022年年底,ChatGPT的横空出世验证了“规模…

C++——类和对象(中)

目录 一、类的默认成员函数 二、构造函数 三、析构函数 四、拷贝构造函数 五、运算符重载 1.基本知识 2.赋值运算符重载 3.取地址运算符重载 a.const成员函数 b.取地址运算符重载 一、类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成…

[ECharts] There is a chart instance already initialized on the dom. 已存在图表,渲染重复

报错:已存在图表,渲染重复 解决: 在合适的时机执行 dispose 方法即可 // echarts 全局存入 实例 let myChart: any;// 在你的 initChart 初始化 Echarts 方法中 先执行清理方法 const initChart () > {// 执行清理方法然后初始化if(myChart){cons…

Linux中进程之间的通信

IPC的概念 即进程间的通信 常用方式: 1,管道通信:有名管道,无名管道 2,信号- 系统开销小 3,消息队列-内核的链表 4,信号量-计数器 5,共享内存 6,内存映射 7&…

轻松合并PDF文档:2024年精选工具指南

不知道你有没有做PDF文件的经历,特别是多部门协同的那种。这时候如果有个可以支持pdf合并的工具那简直不要太开心了。独乐乐不如众乐乐,我把我用过的一些PDF合并工具这里介绍一下吧。 1.PDF编辑器福晰在线 直达链接:https://edit.foxitclou…

Java并发编程(下)

volatile的应用 - volatile修饰类属性(类变量和实例变量),synchronized修饰类方法、代码块,同时volatile在并发中是**不安全**的 - 作用: - 使共享变量在多线程间可见,如果一个字段被声明成volatile&…

【Linux网络】应用层协议:HTTP 与 HTTPS

本篇博客整理了 TCP/IP 分层模型中应用层的 HTTP 协议和 HTTPS协议,旨在让读者更加深入理解网络协议栈的设计和网络编程。 目录 一、协议是什么 1)结构化数据的传输 2)序列化和反序列化 补)网络版计算器 .1- 协议定制 .2- …

在window将Redis注册为服务

将redis注册为系统服务,开启自启动 安装服务 默认注册完之后会自动启动,在window中的服务看一下,如果启动类型为自动,状态是自动运行则启动完成。如果是手动,需要右键属性调整为自动,在点击启动&#xff0c…

LangChain4j-RAG高级-检索增强器

Retrieval Augmentor 检索增强器 RetrievalAugmentor 是 RAG 管道的入口点。它负责使用从各种来源检索的相关 Content 来扩充 ChatMessage 。 可以在创建 AiService 期间指定 RetrievalAugmentor 的实例: Assistant assistant AiServices.builder(Assistant.cla…

Mysql-覆盖索引和前缀索引

一.SQL提示 SQL提示,是优化数据库的一个重要手段,简单来说,就是在SQL语句加入一些人为的提示来达到 二.覆盖索引 尽量使用覆盖索引(查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到),减少select* 知识小贴士: using index condition :查找…

chk是什么文件格式 chk文件怎么恢复正常 chkdsk文件损坏怎么修复

在使用电脑和移动存储设备时,有时我们会发现磁盘中出现了大量的chk文件。这些chk文件无法打开,也无法得知其原本内容。那么,这些chk文件是什么呢?又该如何将chk文件恢复正常呢? chk文件是什么? 在我们查看…

环境搭建-Docker搭建ClickHouse

Docker搭建ClickHouse 一、前言二、ClickHouse安装2.1 拉取镜像运行ClickHouse服务 三、测试安装3.1 进入clickhouse容器3.2 命令补充说明 四、测试连接五、设置CK的用户名密码 一、前言 本文使用的Docker使用Windows搭建,Linux版本的搭建方式一样。 Windows系统搭…

【HarmonyOS】HarmonyOS NEXT学习日记:七、页面与组件的生命周期

【HarmonyOS】HarmonyOS NEXT学习日记:七、页面与组件的生命周期 页面和组件 组件:用Component装饰的代码称为自定义组件页面:Entry装饰的组件即页面的根节点 组件生命周期 aboutToAppear:在创建自定义组件的新实例后&#xf…