枚举基础用法详解
// 枚举基础用法声明、赋值、输出、比较和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/10/11 19:11:10 阅读更多 →
风暴远征英雄年代官网下载攻略,2026 年全网最新,游昕直营安全正规渠道

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

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

2026/10/13 7:08:40 阅读更多 →
Python 异步与面向对象:从“指令”到“架构”的范式跃迁

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

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

2026/10/13 7:41:28 阅读更多 →

最新新闻

基于炬芯ATS308X CPU方式实现opus解码算法实现

基于炬芯ATS308X CPU方式实现opus解码算法实现

实时录音由 zephyr/drivers/audio/shell/audio_driver_shell.c 处理:DMA 回调把每个已完成的 512 B 半缓冲复制到 8 KiB 环形暂存区,后台写入器每次取最多 4 KiB,同时写入 PCM 并交给 opus_stream_feed()。这样写盘期间 DMA 缓冲变化也不会丢…

2026/10/14 4:28:51 阅读更多 →
机器学习实战案例精解:从脏数据到可部署模型的7个工业闭环

机器学习实战案例精解:从脏数据到可部署模型的7个工业闭环

简介:《机器学习实战案例精解》是一本面向数据科学初学者与从业者的Python机器学习实践指南,聚焦统计与概率、回归、时间序列、聚类与分类等核心技术,通过市场营销、医疗供需、金融预测等五大真实场景案例,系统覆盖从数据预处理、…

2026/10/14 4:28:51 阅读更多 →
从零手写VIO第一章:IMU预积分推导与代码实现详解

从零手写VIO第一章:IMU预积分推导与代码实现详解

1. 从零手写VIO:为什么值得啃这块硬骨头视觉惯性里程计(Visual-Inertial Odometry,简称VIO)这几年在机器人、无人机、AR/VR领域的热度一直居高不下。原因很直接:单靠视觉,快速运动或纹理缺失时容易跟丢&…

2026/10/14 4:28:51 阅读更多 →
CEX深度解析:中心化交易所的撮合引擎、资产托管与合规未来

CEX深度解析:中心化交易所的撮合引擎、资产托管与合规未来

1. 先聊清楚:CEX 到底是什么,为什么绕不开它1.1 中心化交易所在区块链生态里的位置中心化交易所(CEX)是区块链世界里流量最大、门槛最低、也最有争议的一类入口。很多刚接触区块链的朋友,第一次真正“上车”并不是通过…

2026/10/14 4:28:51 阅读更多 →
炬芯ATS3089X的放电与充电NTC温度保护功能实现

炬芯ATS3089X的放电与充电NTC温度保护功能实现

# NTC 电池温度保护本版为 ATS3089P 开发板增加充电和放电温度保护,开机自动运行,无需启动命令。 主控通过 GPIO20/J3 的 NTC 电路测温,外置 CW6305 负责执行停止、恢复充电。## 默认保护规则| 状态 | 条件 | 动作 | | --- | --- | --- | | 充…

2026/10/14 4:28:51 阅读更多 →
燃烧仿真中辐射传热模型怎么选?DO与WSGGM实战指南

燃烧仿真中辐射传热模型怎么选?DO与WSGGM实战指南

1. 辐射传热:燃烧仿真中最容易忽略的主角做燃烧仿真的人都知道一个矛盾:大多数人入门的第一个燃烧算例,火焰温度总是偏高。不管湍流模型怎么调、化学反应机理怎么换,炉膛出口温度就是压不下来。直到某天某位前辈淡淡说了一句“你开…

2026/10/14 4:27:51 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →