GOGOGO 枚舉

含義:一種類似于類的一種結構

作用:是Java提供的一個數據類型,可以設置值是固定的
【當某一個數據類型受自身限制的時候,使用枚舉】

語法格式:

public enum 枚舉名{……
}

有哪些成員?

A、對象

public enum EnumDemo {/*** 對象** 對象是直接在枚舉類中* 全大寫默認是對象* 底層語法格式默認 public static final 枚舉名 對象名 = new 枚舉名();* 默認調用的無參構造* 定義多個對象時以逗號隔開分號結尾 對象1,對象2,對象3,對象4……;*/UPPER;
}

如何調用對象

public class EnumDemoTest {public static void main(String[] args) {//直接打印輸出  【枚舉名.對象名】   默認打印結果是對象名System.out.println(EnumDemo.UPPER);//UPPER}
}

注意:這里打印的對象不是地址,默認打印對象名,因為其實它默認重寫了toString方法,手動重寫會打印對象構造方法中的值

B、字段【非靜態和靜態】

	前提:從上自下,先有對象,再有字段;有字段無對象會編譯錯誤
public enum EnumDemo {/*** 字段** 1.數據類型  字段名;** 2.static 數據類型 字段名;*/UPPER;String centre;static String centre1;
}

如何調用字段

public class EnumDemoTest {public static void main(String[] args) {//調用非靜態字段【枚舉名.對象名.非靜態字段名】EnumDemo.UPPER.centre = "aa";System.out.println(EnumDemo.UPPER.centre);//aa//調用靜態字段【枚舉名.靜態字段名】EnumDemo.centre1 = "AA";System.out.println(EnumDemo.centre1);//AA}
}

C、構造方法

 	默認都是 私有的
public enum EnumDemo {/*** 構造方法** 1.無參構造** 2.有參構造【直接此枚舉對象中 對象名("字段類型值")】** 對象默認使用無參** 當有了有參構造,也必須要有無參構造**/UPPER,UPPER1("!"),UPPER2("!",100);String centre;static String centre1;//默認構造方法被private修飾,也只能用它來修飾EnumDemo(){System.out.println("無參構造!");}EnumDemo(String name){System.out.println("有參構造"+name);}EnumDemo(String name,int morey){System.out.println("有參構造"+name+"--"+morey);}}

如何調用構造方法

public class EnumDemoTest {public static void main(String[] args) {//調用無參構造EnumDemo upper = EnumDemo.UPPER;//就是這樣就會打印:無參構造!//調用有參構造(形參列表個數1)EnumDemo upper1 = EnumDemo.UPPER;//就是這樣就會打印:有參構造!//調用有參構造(形參列表個數2……)EnumDemo upper2 = EnumDemo.UPPER;//就是這樣就會打印:有參構造!--100}
}

由此可以看出,每個對象都能共享枚舉里面的其它成員

這里重寫toString方法呢?

public enum EnumDemo {/*** 構造方法** 1.無參構造** 2.有參構造【直接此枚舉對象中 對象名("字段類型值")】** 對象默認使用無參** 當有了有參構造,也必須要有無參構造**/UPPER,UPPER1("!"),UPPER2("!",100);String name;int morey;static String centre1;//默認構造方法被private修飾,也只能用它來修飾EnumDemo(){System.out.println("無參構造!");}EnumDemo(String name){System.out.println("有參構造"+name);}EnumDemo(String name,int morey){//給set/get方法、toString方法this.name = name;this.morey = morey;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getMorey() {return morey;}public void setMorey(int morey) {this.morey = morey;}public static String getCentre1() {return centre1;}public static void setCentre1(String centre1) {EnumDemo.centre1 = centre1;}@Overridepublic String toString() {return "EnumDemo{" +"name='" + name + '\'' +", morey=" + morey +'}';}
}
/*** 調用 UPPER2對象 有參構造*/
public class EnumDemoTest {public static void main(String[] args) {//調用無參構造EnumDemo upper = EnumDemo.UPPER;//就是這樣就會打印:無參構造!//調用有參構造(形參列表個數1)EnumDemo upper1 = EnumDemo.UPPER;//就是這樣就會打印:有參構造!//調用有參構造(形參列表個數2……)EnumDemo upper2 = EnumDemo.UPPER2;System.out.println(upper2);//EnumDemo{name='!', morey=100}}
}

D、方法

public enum EnumDemo {/*** 方法** 1.非靜態方法** 2.靜態方法*/UPPER;void method1(){System.out.println("非靜態方法!");}static void method2(){System.out.println("靜態方法!");}
}

如何調用方法

public class EnumDemoTest {public static void main(String[] args) {//調用非靜態方法【對象名.對象名.非靜態方法】EnumDemo.UPPER.method1();//非靜態方法!//調用靜態方法【枚舉名.靜態方法名】EnumDemo.method2();//靜態方法!}
}

枚舉的繼承

(Enum)是所有枚舉類的基類,都隱式繼承了Enum,只能隱式繼承,不能顯示繼承

在這里插入圖片描述

為何打印對象的時候不是直接打印的地址而是打印的對象名?

java.lang.Object		【所有類的基類,toString方法】└ java.lang.Enum<E>	【所有枚舉類的基類】【因為Enum繼承了Object類,重寫了toString方法】└ 自定義的枚舉類		【所以打印對象是其對象名,而不是地址】

使用場景

一般使用在值比較固定的地方,常和switch一起使用

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67209.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67209.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67209.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AWTK 骨骼動畫控件發布

Spine 是一款廣泛使用的 2D 骨骼動畫工具&#xff0c;專為游戲開發和動態圖形設計設計。它通過基于骨骼的動畫系統&#xff0c;幫助開發者創建流暢、高效的角色動畫。本項目是基于 Spine 實現的 AWTK 骨骼動畫控件。 代碼&#xff1a;https://gitee.com/zlgopen/awtk-widget-s…

[免費]基于Python的Django博客系統【論文+源碼+SQL腳本】

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;看到一個不錯的基于Python的Django博客系統&#xff0c;分享下哈。 項目視頻演示 【免費】基于Python的Django博客系統 Python畢業設計_嗶哩嗶哩_bilibili 項目介紹 隨著互聯網技術的飛速發展&#xff0c;信息的傳播與…

如何將電腦桌面默認的C盤設置到D盤?詳細操作步驟!

將電腦桌面默認的C盤設置到D盤的詳細操作步驟&#xff01; 本博文介紹如何將電腦桌面&#xff08;默認為C盤&#xff09;設置在D盤下。 首先&#xff0c;在D盤建立文件夾Desktop&#xff0c;完整的路徑為D:\Desktop。winR&#xff0c;輸入Regedit命令。&#xff08;或者單擊【…

C++ 寫一個簡單的加減法計算器

************* C topic&#xff1a;結構 ************* Structure is a very intersting issue. I really dont like concepts as it is boring. I would like to cases instead. If I want to learn something, donot hesitate to make shits. Like building a house. Wh…

excel如何查找一個表的數據在另外一個表是否存在

比如“Sheet1”有“張三”、“李四”“王五”三個人的數據&#xff0c;“Sheet2”只有“張三”、“李四”的數據。我們通過修改“Sheet1”的“民族”或者其他空的列&#xff0c;修改為“Sheet2”的某一列。這樣修改后篩選這個修改的列為空的或者為出錯的&#xff0c;就能找到兩…

MySQL 基礎學習(2): INSERT 操作

在這篇文章中&#xff0c;我們將專注于 MySQL 中的 INSERT 操作&#xff0c;深入了解如何高效地向表中插入數據&#xff0c;并探索插入操作中的一些常見錯誤與解決方案。 一、基礎 INSERT 語法 在 MySQL 中&#xff0c;INSERT 操作用于向表中插入新記錄&#xff0c;基本語法如…

CVE-2023-38831 漏洞復現:win10 壓縮包掛馬攻擊剖析

目錄 前言 漏洞介紹 漏洞原理 產生條件 影響范圍 防御措施 復現步驟 環境準備 具體操作 前言 在網絡安全這片沒有硝煙的戰場上&#xff0c;新型漏洞如同隱匿的暗箭&#xff0c;時刻威脅著我們的數字生活。其中&#xff0c;CVE - 2023 - 38831 這個關聯 Win10 壓縮包掛…

論文閱讀(二):理解概率圖模型的兩個要點:關于推理和學習的知識

1.論文鏈接&#xff1a;Essentials to Understand Probabilistic Graphical Models: A Tutorial about Inference and Learning 摘要&#xff1a; 本章的目的是為沒有概率圖形模型背景或沒有深入背景的科學家提供一個高級教程。對于更熟悉這些模型的讀者&#xff0c;本章將作為…

記錄 | 基于Docker Desktop的MaxKB安裝

目錄 前言一、MaxKBStep 1Step2 二、運行MaxKB更新時間 前言 參考文章&#xff1a;如何利用智譜全模態免費模型&#xff0c;生成大家都喜歡的圖、文、視并茂的文章&#xff01; MaxKB的Github下載地址 參考視頻&#xff1a;【2025最新MaxKB教程】10分鐘學會一鍵部署本地私人專屬…

Go反射指南

概念&#xff1a; 官方對此有個非常簡明的介紹&#xff0c;兩句話耐人尋味&#xff1a; 反射提供一種讓程序檢查自身結構的能力反射是困惑的源泉 第1條&#xff0c;再精確點的描述是“反射是一種檢查interface變量的底層類型和值的機制”。 第2條&#xff0c;很有喜感的自嘲…

第26篇 基于ARM A9處理器用C語言實現中斷<二>

Q&#xff1a;基于ARM A9處理器怎樣編寫C語言工程&#xff0c;使用按鍵中斷將數字顯示在七段數碼管上呢&#xff1f; A&#xff1a;基本原理&#xff1a;主程序需要首先調用子程序set_A9_IRQ_stack()初始化IRQ模式的ARM A9堆棧指針&#xff1b;然后主程序調用子程序config_GIC…

基于GS(Gaussian Splatting)的機器人Sim2Real2Sim仿真平臺

項目地址&#xff1a;RoboGSim 背景簡介 已有的數據采集方法中&#xff0c;遙操作&#xff08;下左&#xff09;是數據質量高&#xff0c;但采集成本高、效率低下&#xff1b;傳統仿真流程成本低&#xff08;下右&#xff09;&#xff0c;但真實度&#xff08;如紋理、物理&…

「 機器人 」利用沖程對稱性調節實現仿生飛行器姿態與方向控制

前言 在仿生撲翼飛行器中,通過改變沖程對稱性這一技術手段,可以在上沖與下沖兩個階段引入不對稱性,進而產生額外的力或力矩,用于實現俯仰或其他姿態方向的控制。以下從原理、在仿生飛行器中的應用和典型實驗示例等方面進行梳理與闡述。 1. 沖程對稱性原理 1.1 概念:上沖與…

MongoDB部署模式

目錄 單節點模式&#xff08;Standalone&#xff09; 副本集模式&#xff08;Replica Set&#xff09; 分片集群模式&#xff08;Sharded Cluster&#xff09; MongoDB有多種部署模式&#xff0c;可以根據業務需求選擇適合的架構和部署方式。 單節點模式&#xff08;Standa…

微服務搭建----springboot接入Nacos2.x

springboot接入Nacos2.x nacos之前用的版本是1.0的&#xff0c;現在重新搭建一個2.0版本的&#xff0c;學如逆水行舟&#xff0c;不進則退&#xff0c;廢話不多說&#xff0c;開搞 1、 nacos2.x搭建 1&#xff0c;首先第一步查詢下項目之間的版本對照&#xff0c;不然后期會…

react-native網絡調試工具Reactotron保姆級教程

在React Native開發過程中&#xff0c;調試和性能優化是至關重要的環節。今天&#xff0c;就來給大家分享一個非常強大的工具——Reactotron&#xff0c;它就像是一個貼心的助手&#xff0c;能幫助我們更輕松地追蹤問題、優化性能。下面就是一份保姆級教程哦&#xff01; 一、…

npm啟動前端項目時報錯(vue) error:0308010C:digital envelope routines::unsupported

vue 啟動項目時&#xff0c;npm run serve 報下面的錯&#xff1a; error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:67:19) at Object.createHash (node:crypto:133:10) at FSReqCallback.readFileAfterClose [as on…

改進候鳥優化算法之三:引入自適應策略的候鳥優化算法(AS-MBO)

引入自適應策略的候鳥優化算法(Migrating Birds Optimization with Adaptive Strategy,簡稱AS-MBO)是對傳統候鳥優化算法(Migrating Birds Optimization,MBO)的一種改進。MBO算法本身是一種基于群體智能的元啟發式優化算法,其靈感來源于候鳥遷徙時的“V”字形飛行隊列,…

02-機器學習-核心概念

以下是機器學習核心概念的詳細梳理。 1. 機器學習三大范式 類型定義典型應用監督學習使用帶標簽的數據訓練模型&#xff0c;預測未知數據的標簽。分類&#xff08;郵件垃圾過濾&#xff09;、回歸&#xff08;房價預測&#xff09;無監督學習從無標簽的數據中發現隱藏模式或結…

Redis實戰(黑馬點評)——關于緩存(緩存更新策略、緩存穿透、緩存雪崩、緩存擊穿、Redis工具)

redis實現查詢緩存的業務邏輯 service層實現 Overridepublic Result queryById(Long id) {String key CACHE_SHOP_KEY id;// 現查詢redis內有沒有數據String shopJson (String) redisTemplate.opsForValue().get(key);if(StrUtil.isNotBlank(shopJson)){ // 如果redis的數…