枚举类——指向自己的数据结构
时间:2019-08-22
本文章向大家介绍枚举类——指向自己的数据结构,主要包括枚举类——指向自己的数据结构使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
public enum Weekday { SUN,MON,TUS,WED,THU,FRI,SAT }
编译一下它,再反编译一下看看它到底是什么样子的:
如果写成代码就是:
小白惊奇的发现,枚举类内部有多个不同的这个枚举类的实例,这些不同的实例仅名称不同,而内部结构都一样。
在这个类的内部还有这个类的实例,那么,内部实例的结构岂不是和这个类相同,内部实例的内部还将有内部实例,以此类推无穷无尽。
public class Main { public static void main(String[] args) { for (Weekday day : Weekday.values()) { System.out.println(day.name()); } Weekday fri = Weekday.FRI.FRI.FRI.FRI; Weekday fri1 = Weekday.FRI; Weekday fri2 = Weekday.FRI.FRI; Weekday fri3 = Weekday.FRI.FRI.FRI; // enum -> String: System.out.println("FRI.name() = " + Weekday.FRI.name()); // 定义时的序号: System.out.println("FRI.ordinal() = " + fri.ordinal()); // String -> enum: System.out.println(Weekday.valueOf("FRI").name()); System.out.println(Weekday.valueOf("FRI")==Weekday.FRI); System.out.println(fri==Weekday.FRI); System.out.println(fri==fri1); System.out.println(fri==fri2); System.out.println(fri==fri3); // 不存在的name: //Weekday.valueOf("ABC"); } }
结果:
SUN
MON
TUE
WED
THU
FRI
SAT
FRI.name() = FRI
FRI.ordinal() = 5
FRI
true
true
true
true
true
瞬时想起无限循环递归,会耗尽内存。这样用就没事么?
原来,类的内部实例都是static静态类型的实例,静态实例有个特性就是不管创建多少实例,实际上都只有一个实例。
恍然大悟,原来类内部的实例指向自己,所以才可以这样调用。
原文地址:https://www.cnblogs.com/wangziyi0513/p/11396500.html
- 保存数据返回后可以继续编辑
- 深度学习Matlab工具箱代码详解概览
- android读取sd卡图片并进行缩放操作
- 深度学习Matlab工具箱代码注释之cnnapplygrads.m
- android异步操作
- 深度学习Matlab工具箱代码注释之cnnbp.m
- 仿大众点评悬浮购买框效果
- 深度学习Matlab工具箱代码注释之cnnff.m
- 图片缩放,拖拽等操作
- 深度学习Matlab工具箱代码注释之cnntrain.m
- 深度学习Matlab工具箱代码注释之cnnsetup.m
- 深度学习Matlab工具箱代码注释之MnistTest.m
- 如何以“正确的姿势”阅读开源软件代码
- android 二维码简化,实现仿qq扫描效果
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法