自动装箱和拆箱,关于枚举

Java 枚举类,java枚举类

枚举,java枚举

有关枚举,java枚举

二个简约的例子:

 

自动装箱和拆箱,关于枚举。枚举定义类:

 

图片 1 

 

测试类:

 

 图片 2

 

关键词:实例,常量

 

枚举也是叁个类。从测验类的第5行知,枚举变量的扬言与一般对象类的扬言是平等的(Spiciness
howHot = …)。

 

枚举定义类的第4行:NOT,MILD…,每一串字母都是三个实例,每三个实例都以常量。即:Spiciness那一个枚举类在表明时与一般宣称同样:Spiciness
howHot=…,而等号后边的具体实例只好有八个值:Spiciness.NOT,Spiciness.MILD等等。

 

常量也许有谈得来的点子

 

ordinal():某些enum实例在具有实例中的地方。(举例上例:Spiciness.MEDIUM.ordinal()
== 2)。

只顾,这里ordinal()是实例对象调用的。

 

values():静态方法,依照具有常量在枚举中的地方,再次来到全数常量构成的数组:

 

 图片 3

 

专注,values()是静态方法,直接用Spiciness调用。

 

关键词:java.lang.Enum

 

您创立enum时,编写翻译器会为那几个enum生成叁个枚举类,那个类承继自:java.lang.Enum。

 

编写翻译器会为那些枚举类自动抬高toString()、hashCode()等方式,所以,在不一致的枚举常量之间,能够用equals、==去比较援引、比较值等:(注意equals与==的分别,equals与hashCode的涉嫌)

 

图片 4

 

Enum类实现了Comparable接口,所以,枚举之间能够用compareTo方法相比较。

 

像相似类同样对待enum

 

图片 5

 

看上边的代码,除了某个奇怪的范围之外,enum也是贰个类,它连续自Enum类,那么,咱们即可遵照操作一般类的方式去操作enum。

 

譬喻说,第13行,加了一个私人商品房构造器(私有构造器使得大家无法从类的表面使用new的章程制造四个实例,但对于枚举类,纵然你在此间写一个public,大家也不能从外表创造实例,还是要从里面创建)。

 

第11、17行等,都以像相似类一样定义变量、方法。

 

而由于WEST、NORTH等自笔者正是enum内部创建的实例,那么由于您定义的构造函数中有参数,将要给WEST、NORTH等实例常量后边加上参数(类似于一般类创立实例的情势)。

 

只是这里有三个范围,在定义方法以前,必须首先定义enum实例,即:5、6、7、8、9行必须写在头里。

 

关键词:switch

 

枚举本来正是常量,用在switch中再适合然而,用法也比较轻便,比如略。

 

关键词:values()

 

面前说过,values()方法是一个静态方法,但更有趣的是,enum的父类Enum类是尚未这几个艺术的,values()方法是enum在编译时,编写翻译器加上的。

 

既然父类Enum未有values()方法,这要是把enum类“向上转型”为Enum类型,就访问不到values()方法了:

 

图片 6

 

但是天无绝人之路,你固然真想获取实例常量数组的话,依旧有措施的。通过反射获取enum的Class,你会发觉,Class正好有个getEnumConstants()能够满意你的供给:

 

 图片 7

 

越来越多内容请关怀微信订阅号:it_pupil

图片 8

 

 

 

三个轻便易行的例证: 枚举定义类:
测验类: 关键词:实例,常量 枚举也是三个类。从测量检验类的第 5
行知,枚举变量的声…

Java学习 (十七)、自动装箱和拆箱,枚举类型,java枚举

电动装箱和拆箱

临时候供给将int那样的主导类型转换为援用类型对象;

主导数据类型的机关装箱,拆箱是J2SE
5.0提供的新职能,为包装基本数据类型提供了低价,但提供方便的还要遮盖了细节,提议在力所能致区分基本数据类型与引用类型的差距时再利用;

几个机关装箱的例子:

Integer i=10;相当于Integer i=new Integer(10);

拓展编写翻译时,编写翻译器依照上下文推断是还是不是开展机动装箱动作,在上例中变量i援用的是Integer类的实例;

同一的动作适用于boolean、byte、short、char、long、float、double等为主数据类型,分别采纳相应的包装等级次序Boolean、Byte、Short、Character、Long、Float、Double;

 

J2SE 5.0中也足以自行拆箱,相当于将指标中的基本数据类型新闻自动抽出;

例如:

 1 Integer m=10; 2 Int n=m; 3
//相当于n=m.intValue(); 

m变量在机动装箱为Integer的实例后,假若被赋值给八个int类型的变量n,则会自行调换为int类型再赋值;

在运算时,也得以开展机动装箱和拆箱;

如:

 1 Integer i=10; 2 System.out.println(i+10);
3 System.out.println(i++); 

 1 public class AutoBoxDemo{
 2     public static void main(String[] args){
 3         int i=10;
 4         double d=10.5;
 5         
 6         //把基本类型赋值给引用类型
 7         //基本类型会在编译时自动装箱
 8         Integer num1=i;
 9         Double num2=d;
10         System.out.println(num1);
11         System.out.println(num2);
12         
13         //把包装类(引用类型)赋值给基本类型
14         //会自动做拆箱
15         int j=num1;
16         //int j=num1.intValue();
17         double dd=num2;
18         //int dd=num2.doubleValue();
19         System.out.println(j);
20         System.out.println(dd);
21         
22         Object o=i;
23         System.out.println(o);
24         Integer b=(Integer)o;
25         System.out.println(b);
26     }
27 }

枚举类型

 1 public enum Color{ 2
RED,BLUE,BLACK,YELLOW,GREEN; 3 } 

Enmu很像特别的class,实际上enum注解定义的体系便是一个类;

这么些类都以类库中Enum类的子类(java.lang.Enum<E>),它们继续了Enum中有的是一蹴而就的艺术;

枚举值都以public static
final的,约等于常量,因而枚举类中的枚举值应总体大写;

枚举类型是class,在枚举类型中有构造器,方法和字段,但枚举的构造器有异常的大的比不上;

构造器只在协会枚举值的时候被调用;

构造器私有private,不允许有public构造器;

枚举值能够再switch语句中选用;

 1 public class EnumDemo{
 2     public static void main(String []args){
 3         System.out.println(Color.RED);
 4         Color[] colors=Color.values();
 5         for(Color c:colors){
 6         System.out.println("循环:"+c);
 7         }
 8         
 9         System.out.println(Person.P1);
10         Person[] persons=Person.values();
11         for(Person p:persons){
12         System.out.println("循环:"+p);
13         }
14         
15         Person p=Person.P3;
16         switch(p){
17             case P1:System.out.println("switch:"+Person.P1);break;
18             case P2:System.out.println("switch:"+Person.P2);break;
19             case P3:System.out.println("switch:"+Person.P3);break;
20         }
21     }
22 }
23 
24 //当jvm去加载使用枚举类时,会预先创建多个枚举类型的对象供外部类使用
25 //public static final Color RED=new Color();
26 //public static final Color BLUE=new Color();
27 //public static final Color YELLOW=new Color();
28 enum Color{
29     RED,BLUE,YELLOW;//枚举类型的值必须作为第一条语句出现
30     //不能使用public
31     //调用次数与枚举数相同
32     /*public*/ private Color(){
33         System.out.println("构造方法");
34     }
35     
36     /*public String toString(){
37         return "aa";
38     }*/
39 }
40 
41 //public static final Person P1=new Person("张三",30);
42 //public static final Person P2=new Person("李四",20);
43 //public static final Person P3=new Person("王五",18);
44 enum Person{
45     P1("张三",30),P2("李四",20),P3("王五",18);
46     private String name;
47     private int age;
48     private Person(String name,int age){
49         this.name=name;
50         this.age=age;
51     }
52     public String toString(){
53         return name+"--"+age;
54     }
55 }

 

(十七)、自动装箱和拆箱,枚举类型,java枚举 自动装箱和拆箱
临时需求将int那样的为主类型转变为引用类型对象; 基本数据类型…

一、两种枚举类代码示例

1.枚举是何许?

枚举类型提供了一种概念常量的主意,每多少个枚举类型成员都以该枚举类型的三个实例。

  1、最简易枚举类

enum Nuber {
    One, Two
}// enum 的语法结构尽管和class的语法不一样,但是经过JVM编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum<E>。而每一个类都有一个默认的无参构造器,所以此处可以不加构造器

2.构造艺术

枚举类型的整合艺术必须为private类型,避防备在限定范围之外实例化枚举对象。

发表评论

电子邮件地址不会被公开。 必填项已用*标注