枚举基础用法详解
// 枚举基础用法声明、赋值、输出、比较和switch控制 enum Apple { Jonathan, GoldenDel, RedDel, Winesap, Cortland } class EnumDemo { public static void main(String args[]) { Apple ap Apple.RedDel; System.out.println(Value of ap: ap); // 输出枚举值 if (ap Apple.GoldenDel) // 枚举值比较 System.out.println(ap contains GoldenDel. ); switch (ap) { // 枚举控制switch语句 case Jonathan: System.out.println(Jonathan is red.); break; case GoldenDel: System.out.println(Golden Delicious is yellow.); break; // ... 其他case } } }// 使用枚举内置方法values()和valueOf() enum Apple { Jonathan, GoldenDel, RedDel, Winesap, Cortland } class EnumDemo2 { public static void main(String args[]) { // 获取所有枚举常量 Apple[] allapples Apple.values(); // values()返回枚举数组 for (Apple a : allapples) System.out.println(a); // 通过名称获取枚举实例 Apple ap Apple.valueOf(Winesap); // valueOf()根据字符串返回枚举 System.out.println(ap contains ap); } }// 枚举构造函数、实例变量和方法 enum Apple { Jonathan(10), GoldenDel(9), RedDel(12), Winesap(15), Cortland(8); private int price; // 实例变量 Apple(int p) { price p; } // 构造函数 int getPrice() { return price; } // 实例方法 } class EnumDemo3 { public static void main(String args[]) { // 访问枚举实例的方法 System.out.println(Winesap costs Apple.Winesap.getPrice() cents. ); // 遍历所有枚举值并调用方法 for (Apple a : Apple.values()) System.out.println(a costs a.getPrice() cents.); } }// 枚举重载构造函数 enum Apple { Jonathan(10), GoldenDel(9), RedDel, Winesap(15), Cortland(8); // RedDel使用默认构造函数 private int price; Apple(int p) { price p; } // 带参构造函数 Apple() { price -1; } // 无参构造函数重载 int getPrice() { return price; } }// 枚举方法ordinal()、compareTo()和equals() enum Apple { Jonathan, GoldenDel, RedDel, Winesap, Cortland } class EnumDemo4 { public static void main(String args[]) { // 获取枚举常量的序数声明位置 for (Apple a : Apple.values()) System.out.println(a a.ordinal()); // ordinal()返回序数 Apple ap Apple.RedDel; Apple ap2 Apple.GoldenDel; Apple ap3 Apple.RedDel; // 比较枚举顺序 if (ap.compareTo(ap2) 0) // compareTo()比较序数 System.out.println(ap comes before ap2); // 比较枚举相等性 if (ap.equals(ap3)) // equals()比较内容 System.out.println(ap equals ap3); if (ap ap3) // 比较引用 System.out.println(ap ap3); } }// 枚举应用示例决策器 import java.util.Random; enum Answers { NO, YES, MAYBE, LATER, SOON, NEVER } // 答案枚举 class Question { Random rand new Random(); Answers ask() { int prob (int) (100 * rand.nextDouble()); // 根据概率返回不同枚举值 if (prob 15) return Answers.MAYBE; else if (prob 30) return Answers.NO; // ... 其他概率分支 else return Answers.NEVER; } } class AskMe { static void answer(Answers result) { switch (result) { // 根据枚举值输出不同结果 case NO: System.out.println(No); break; case YES: System.out.println(Yes); break; // ... 其他case } } public static void main(String args[]) { Question q new Question(); answer(q.ask()); // 随机获取并输出答案 answer(q.ask()); } }// 包装类基本用法手动装箱和拆箱 class Wrap { public static void main(String args[]) { Integer iOb Integer.valueOf(100); // 手动装箱int - Integer int i iOb.intValue(); // 手动拆箱Integer - int System.out.println(i iOb); // 输出100 100 } }// 自动装箱和拆箱 class AutoBox { public static void main(String args[]) { Integer iOb 100; // 自动装箱编译器转换为Integer.valueOf(100) int i iOb; // 自动拆箱编译器转换为iOb.intValue() System.out.println(i iOb); // 输出100 100 } }// 自动装箱/拆箱在方法参数和返回值中的应用 class AutoBox2 { static int m(Integer v) { // 参数自动装箱返回值自动拆箱 return v; // 自动拆箱为int } public static void main(String args[]) { Integer iOb m(100); // 参数100自动装箱返回值自动装箱 System.out.println(iOb); } }// 表达式中的自动装箱/拆箱 class AutoBox3 { public static void main(String args[]) { Integer iOb 100; iOb; // 自动拆箱-自增-自动装箱 System.out.println(After iOb: iOb); Integer iOb2 iOb (iOb / 3); // 表达式计算中自动拆箱/装箱 int i iOb (iOb / 3); // 结果不装箱 System.out.println(i after expression: i); } }// 混合类型表达式中的自动装箱/拆箱 class AutoBox4 { public static void main(String args[]) { Integer iOb 100; Double dOb 98.6; dOb dOb iOb; // iOb自动拆箱为int提升为double与dOb相加 System.out.println(dOb after expression: dOb); } }// Boolean和Character的自动装箱/拆箱 class AutoBox5 { public static void main(String args[]) { Boolean b true; // 自动装箱 if (b) System.out.println(b is true); // 条件表达式中自动拆箱 Character ch x; // 自动装箱 char ch2 ch; // 自动拆箱 System.out.println(ch2 is ch2); } }// 手动拆箱错误示例 class UnboxingError { public static void main(String args[]) { Integer iOb 1000; // 自动装箱 int i iOb.byteValue(); // 错误手动调用byteValue()导致数据截断 System.out.println(i); // 输出241000超出byte范围 } }// 注解基础定义和使用import java.lang.annotation.*; import java.lang.reflect.*; Retention(RetentionPolicy.RUNTIME) // 注解保留到运行时 interface MyAnno { String str(); int val(); } class Meta { MyAnno(str Annotation Example, val 100) // 应用注解 public static void myMeth() { try { Class? c Meta.class; Method m c.getMethod(myMeth); MyAnno anno m.getAnnotation(MyAnno.class); // 获取注解 System.out.println(anno.str() anno.val()); } catch (NoSuchMethodException exc) { System.out.println(Method Not Found.); } } public static void main(String args[]) { myMeth(); } }// 带参数方法的注解 import java.lang.annotation.*; import java.lang.reflect.*; Retention(RetentionPolicy.RUNTIME) interface MyAnno { String str(); int val(); } class Meta { MyAnno(str Two Parameters, val 19) public static void myMeth(String str, int i) { try { Class? c Meta.class; // 获取带参数的方法 Method m c.getMethod(myMeth, String.class, int.class); MyAnno anno m.getAnnotation(MyAnno.class); System.out.println(anno.str() anno.val()); } catch (NoSuchMethodException exc) { System.out.println(Method Not Found.); } } public static void main(String args[]) { myMeth(test, 10); } }// 多个注解和类级别注解 import java.lang.annotation.*; import java.lang.reflect.*; Retention(RetentionPolicy.RUNTIME) interface MyAnno { String str(); int val(); } Retention(RetentionPolicy.RUNTIME) interface What { String description(); } What(description An annotation test class) // 类注解 MyAnno(str Meta2, val 99) class Meta2 { What(description An annotation test method) // 方法注解 MyAnno(str Testing, val 100) public static void myMeth() { Meta2 ob new Meta2(); try { // 获取类的所有注解 Annotation annos[] ob.getClass().getAnnotations(); System.out.println(All annotations for Meta2:); for (Annotation a : annos) System.out.println(a); // 获取方法的所有注解 Method m ob.getClass().getMethod(myMeth); annos m.getAnnotations(); System.out.println(All annotations for myMeth:); for (Annotation a : annos) System.out.println(a); } catch (NoSuchMethodException exc) { System.out.println(Method Not Found.); } } public static void main(String args[]) { myMeth(); } }// 注解默认值 import java.lang.annotation.*; import java.lang.reflect.*; Retention(RetentionPolicy.RUNTIME) interface MyAnno { String str() default Testing; // 默认值 int val() default 9000; } class Meta3 { MyAnno() // 使用默认值 public static void myMeth() { Meta3 ob new Meta3(); try { Class? c ob.getClass(); Method m c.getMethod(myMeth); MyAnno anno m.getAnnotation(MyAnno.class); System.out.println(anno.str() anno.val()); // 输出默认值 } catch (NoSuchMethodException exc) { System.out.println(Method Not Found.); } } public static void main(String args[]) { myMeth(); } }// 标记注解无成员 import java.lang.annotation.*; import java.lang.reflect.*; Retention(RetentionPolicy.RUNTIME) interface MyMarker { } // 标记注解 class Marker { MyMarker // 应用标记注解 public static void myMeth() { Marker ob new Marker(); try { Method m ob.getClass().getMethod(myMeth); // 检查注解是否存在 if (m.isAnnotationPresent(MyMarker.class)) System.out.println(MyMarker is present.); } catch (NoSuchMethodException exc) { System.out.println(Method Not Found.); } } public static void main(String args[]) { myMeth(); } }// 单成员注解 import java.lang.annotation.*; import java.lang.reflect.*; Retention(RetentionPolicy.RUNTIME) interface MySingle { int value(); // 单成员必须命名为value } class Single { MySingle(100) // 单成员注解可省略value public static void myMeth() { Single ob new Single(); try { Method m ob.getClass().getMethod(myMeth); MySingle anno m.getAnnotation(MySingle.class); System.out.println(anno.value()); // 访问value成员 } catch (NoSuchMethodException exc) { System.out.println(Method Not Found.); } } public static void main(String args[]) { myMeth(); } }// 类型注解Java 8 import java.lang.annotation.*; import java.lang.reflect.*; Target(ElementType.TYPE_USE) // 可用于任何类型使用处 interface TypeAnno { } Target(ElementType.TYPE_PARAMETER) // 用于类型参数 interface What { String description(); } Target(ElementType.FIELD) // 用于字段 interface EmptyOK { } Target(ElementType.METHOD) // 用于方法 interface Recommended { } class TypeAnnoDemoWhat(description Generic data type) T { // 类型参数注解 TypeAnno String str; // 类型注解 EmptyOK String test; // 字段注解 public TypeAnno Integer f2(int j, int k) { // 返回类型注解 return j k; } public Recommended Integer f3(String str) { // 方法注解 return str.length() / 2; } public void f4() throws TypeAnno NullPointerException { // 异常类型注解 // ... } String MaxLen(10) [] NotZeroLen [] w; // 数组注解 public static void myMeth(int i) { // 类型参数注解 TypeAnnoDemoTypeAnno Integer ob new TypeAnnoDemoTypeAnno Integer(); // 创建表达式注解 Unique TypeAnnoDemoInteger ob2 new Unique TypeAnnoDemoInteger(); Object x Integer.valueOf(10); Integer y; y (TypeAnno Integer) x; // 转换注解 } class SomeClass extends TypeAnno TypeAnnoDemoBoolean { } // 继承注解 }// 重复注解Java 8 import java.lang.annotation.*; import java.lang.reflect.*; Retention(RetentionPolicy.RUNTIME) Repeatable(MyRepeatedAnnos.class) // 指定容器注解 interface MyAnno { String str() default Testing; int val() default 9000; } Retention(RetentionPolicy.RUNTIME) interface MyRepeatedAnnos { // 容器注解 MyAnno[] value(); } class RepeatAnno { MyAnno(str First annotation, val -1) // 重复注解 MyAnno(str Second annotation, val 100) public static void myMeth(String str, int i) { RepeatAnno ob new RepeatAnno(); try { Class? c ob.getClass(); Method m c.getMethod(myMeth, String.class, int.class); // 通过容器注解获取重复注解 Annotation anno m.getAnnotation(MyRepeatedAnnos.class); System.out.println(anno); } catch (NoSuchMethodException exc) { System.out.println(Method Not Found.); } } public static void main(String args[]) { myMeth(test, 10); } }参考来源Java bytecode instruction listingsfvr一micro使用说明_LaTeX listings 宏包使用说明一Java Search Tools Product ListingsJava bytecode instruction listingsandroid source code list

相关新闻

AI竞争的下一个决胜场

AI竞争的下一个决胜场

今天的从业者,能想明白吗?99%的AI从业者,一样想不明白。他们把"模型参数"当终极真理,把"评测榜单"当唯一标尺,把"单步推理准确率"当全部战斗力。一谈AI就是"某某模型又突破了几个点…

2026/8/1 5:55:59 阅读更多 →
风暴远征英雄年代官网下载攻略,2026 年全网最新,游昕直营安全正规渠道

风暴远征英雄年代官网下载攻略,2026 年全网最新,游昕直营安全正规渠道

风暴远征英雄年代官方正版游戏渠道介绍 《风暴远征英雄年代》,由安徽游昕网络科技有限公司负责运营,正版复刻经典战国国战怀旧手游。游戏依托专属官方主站面向全网正式开放,高度还原英雄年代端游原版内容,坚守长久公平运营理念&am…

2026/8/1 5:55:59 阅读更多 →
Python 异步与面向对象:从“指令”到“架构”的范式跃迁

Python 异步与面向对象:从“指令”到“架构”的范式跃迁

文章目录 序幕:代码的两次进化 第一模块:异步编程 —— 让代码学会“一心多用” 1.1 同步 vs 异步:从“排队”到“并行等待” 同步:你点了一杯咖啡,站着干等 异步:同时下单,谁先好先拿谁 1.…

2026/8/1 5:55:59 阅读更多 →

最新新闻

MSA算法:从PID控制到卡尔曼滤波的迭代优化核心思想

MSA算法:从PID控制到卡尔曼滤波的迭代优化核心思想

1. 从“黑盒”到“白盒”:理解MSA算法的核心思想 在算法和工程优化的世界里,我们常常会遇到一些“黑盒”问题:输入一堆参数,得到一个结果,但中间的过程像是一个复杂的魔法,难以拆解和优化。尤其是在处理多变…

2026/8/1 12:12:18 阅读更多 →
PGP邮件加密实战指南:从密钥生成到邮件客户端集成

PGP邮件加密实战指南:从密钥生成到邮件客户端集成

1. 为什么PGP依然是邮件加密的“金标准”? 在数字世界里,我们每天都在发送和接收邮件,从工作沟通到私人闲聊,大量敏感信息在其中流转。你有没有想过,这些邮件在传输过程中,就像一张明信片,途经…

2026/8/1 12:12:18 阅读更多 →
轻量级规则引擎实战:动态业务逻辑配置与Spring Boot集成

轻量级规则引擎实战:动态业务逻辑配置与Spring Boot集成

最近在技术圈里,一个看似“跨界”的话题正在引发讨论:如果给开发者一个能够自由编辑故事线的“剧情编辑器”,我们能在代码世界里创造出怎样的可能性?这不仅仅是游戏或小说中的幻想,而是现代软件开发中越来越重要的能力…

2026/8/1 12:12:18 阅读更多 →
深入解析MMU:虚拟内存、地址转换与系统稳定的基石

深入解析MMU:虚拟内存、地址转换与系统稳定的基石

1. 项目概述:从“内存打架”到“秩序守护者”刚入行那会儿,调试程序最怕遇到的就是“段错误”或者“非法内存访问”。程序莫名其妙就崩溃了,报错信息指向一个你完全没操作过的地址,那种感觉就像在黑暗的房间里摸黑走路&#xff0c…

2026/8/1 12:12:18 阅读更多 →
资本市场线(CML)解析:从有效前沿到最优资产配置的实战指南

资本市场线(CML)解析:从有效前沿到最优资产配置的实战指南

1. 项目概述:从“有效前沿”到“最优组合”的跨越 在金融投资的世界里,我们常常面临一个核心矛盾:如何在风险和收益之间找到那个“恰到好处”的平衡点?如果你已经接触过现代投资组合理论,大概率听说过“有效前沿”这个…

2026/8/1 12:12:18 阅读更多 →
揭秘!吉林白山与山东悦尚电缆桥架对比,不同预算该选谁?

揭秘!吉林白山与山东悦尚电缆桥架对比,不同预算该选谁?

在电缆桥架领域,不同厂家的产品各有特点。本次测评聚焦吉林白山电缆桥架源头厂家及山东悦尚电气设备有限公司的产品,目的在于为对电缆桥架感兴趣的人群提供客观的产品数据及表现情况,帮助大家进行进一步的比较和选择。以下是参与本次测评的产…

2026/8/1 12:11:18 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →