枚举基础用法详解
// 枚举基础用法声明、赋值、输出、比较和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

相关新闻

金蝶云星空ERP数据库迁移电信云RDS实战指南

金蝶云星空ERP数据库迁移电信云RDS实战指南

1. 项目背景与核心价值:当企业级ERP遇上云原生数据库最近在帮一家客户做系统上云的迁移方案,他们用的是金蝶云星空,数据库一直托管在本地机房。随着业务量增长,老旧的物理服务器在性能、扩展性和运维成本上越来越吃力。客户的目标…

2026/8/1 5:58:08阅读更多 →
Unity UIEffect组件实战:从原理到性能优化,打造高性能UI特效

Unity UIEffect组件实战:从原理到性能优化,打造高性能UI特效

1. 项目概述:为什么你的Unity UI需要“特效”?如果你做过Unity项目,尤其是手游或者需要精致界面的应用,肯定遇到过这样的困境:UI设计师给了一套非常酷炫的界面设计稿,充满了流光、阴影、模糊、颜色渐变等效…

2026/8/1 5:58:08阅读更多 →
Unity Shader入门:从渲染管线到顶点/片元着色器实践

Unity Shader入门:从渲染管线到顶点/片元着色器实践

1. 项目概述:从“黑盒”到“可控”的渲染之旅如果你刚开始接触Unity,或者已经能用C#脚本让角色跑跳、让UI动起来,但一看到材质球上那些复杂的参数和神秘的Shader代码就感到头疼,那么这篇笔记可能就是为你准备的。我最初学Unity时&…

2026/8/1 5:58:08阅读更多 →
Chrome浏览器localhost:6667无法访问?解析ERR_UNSAFE_PORT与端口安全策略

Chrome浏览器localhost:6667无法访问?解析ERR_UNSAFE_PORT与端口安全策略

1. 问题现场:当localhost:6667在Chrome中“消失”如果你是一名开发者,或者经常需要在本机搭建测试环境,那么对http://localhost:8080或http://127.0.0.1:3000这样的地址一定不会陌生。localhost代表本机回环地址,是我们进行本地开…

2026/8/1 7:08:34阅读更多 →
Starrocks 4.0.2索引技术解析与性能优化实践

Starrocks 4.0.2索引技术解析与性能优化实践

1. Starrocks 4.0.2索引技术全景解析Starrocks作为新一代MPP分析型数据库,在4.0.2版本中对索引系统进行了重要升级。与传统数据库的B树索引不同,Starrocks采用了更适合OLAP场景的混合索引架构。在实际测试中,一个包含1亿条数据的表使用N-gram…

2026/8/1 7:08:34阅读更多 →
【AI物流降本增效实战指南】:20年行业专家亲授5大落地场景+3个避坑红线

【AI物流降本增效实战指南】:20年行业专家亲授5大落地场景+3个避坑红线

更多请点击: https://kaifayun.com 第一章:AI物流降本增效的底层逻辑与价值锚点 AI在物流领域的价值并非源于算法本身的复杂性,而在于其对“不确定性”的系统性消解能力。传统物流依赖经验决策与静态规则,在需求波动、运力错配、…

2026/8/1 7:08:34阅读更多 →
网站病毒清除怎么做?公司网站维护与网站木马解决全流程方案,公司网站被病毒入侵、被挂木马?专业网站病毒清除+公司网站维护+

网站病毒清除怎么做?公司网站维护与网站木马解决全流程方案,公司网站被病毒入侵、被挂木马?专业网站病毒清除+公司网站维护+

网站病毒清除怎么做?公司网站维护与网站木马解决全流程方案“公司网站突然跳转到博彩页面”、“网站文件被加密勒索”、“服务器里多了好多不认识的文件”——这些是网站病毒入侵后的典型症状。对于企业而言,网站不仅是品牌展示的窗口,更是业…

2026/8/1 7:08:34阅读更多 →
AI摆摊:在 muShanghai × 观猹 AI 练摊集市的一次高密度体验

AI摆摊:在 muShanghai × 观猹 AI 练摊集市的一次高密度体验

AI摆摊:在 muShanghai 观猹 AI 练摊集市的一次高密度体验 那天下午,我拖着行李箱站在上海静安寺附近一个不起眼的弄堂口,里面传来此起彼伏的键盘敲击声和机器人关节电机转动的声音。门口挂着一块手写牌:「muShanghai 观猹 AI 练…

2026/8/1 7:08:34阅读更多 →
Python脚本在cmd中无输出?系统化排查与解决方案

Python脚本在cmd中无输出?系统化排查与解决方案

1. 问题现象与初步排查如果你在Windows的cmd命令行里,输入python3 your_script.py后,光标闪了一下,然后什么也没发生——没有输出,没有报错,程序也没运行,cmd只是安静地回到了命令提示符状态——那你大概率…

2026/8/1 7:06:34阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

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