[笔记] Java基础(5)-枚举与包装类

214 阅读2分钟

1. 自定义枚举类

  • 枚举:变量的值只限于列举出的值得范围内,相当于单例模式的扩展

  • 自定义枚举类:分为无参构造枚举类、有参构造枚举类、含抽象方法枚举类三种;含抽象方法的枚举类在创建对象时使用匿名内部类

  • 有参构造枚举类

    public class Week {
        public static final Week MON = new Week("星期一");
        public static final Week MON = new Week("星期二");
        ...;
        private String name;
        public String getName() {
            return name;
        }
        private Week(String name) {
            this.name = name;
        }
    }
    

2. enum关键字

  • enum关键字:为JDK1.5后加入,用于定义枚举类

    /* 方式一:相当于无参构造模式 */
    public enum Week {
        MON,TUE,WED,...;
    }
    /* 方式二:相当于有参构造模式 */
    public enum Week {
        MON("星期一"),TUE("星期二"),WED("星期三"),...;
        private String name;
        private Week(String name) {
            this.name = name;
        }
    }
    /* 方式三:相当于含抽象方法模式 */
    public enum Week {
        MON() {
            void show(){ ... }
        }, TUE() {
            void show(){ ... }
        }, WED() {
            void show(){ ... }
        }, ...;
        abstract void show();
    }
    
  • enum类注意事项

    • 所有enum关键字定义的类都是Enum类的子类
    • 枚举类第一行必须是枚举项;后面无内容时,末尾的分号可以省略
    • 枚举类构造器必须且默认为private
    • 枚举类可以有抽象方法,但枚举项必须重写抽象方法
    • 枚举类典型应用:switch语句

3. Enum类

  • Enum类:java.lang.Enum
  • int ordinal():返回枚举项的序号,序号从0开始
  • int compareTo():比较枚举项之间的顺序,本质为比较序号
  • String name():获取枚举对象的名称
  • String toString():获取枚举对象的字符串形式
  • static <T extends Enum<T>> valueOf(Class<T> enumType, String name):返回指定枚举类型中名称为name的对象
  • T[] values():返回所有枚举项组成的数组

4. 基本数据类型与包装类对应关系

  • byte >> Byte
  • short >> Short
  • int >> Integer
  • long >> Long
  • float >> Float
  • double >> Double
  • char >> Character
  • boolean >> Boolean

5. Integer类

  • Integer类:java.lang.Integer
  • static String toBinaryString(int i):获取二进制字符串;类似有toHexSting()toOctalString()
  • int intValue():将包装类转为基本数据类型
  • Integer(int value):使用value构造新对象
  • Integer(String s):使用s构造对应值的对象
  • Integer.MAX_VALUEInteger类型的最大值
  • Integer.MIN_VALUEInteger类型的最小值
  • int类型转为String类型
    • ""拼接或String.valueOf(int i);
    • new Integer().toString();Integer.toString();
  • String类型转为int类型
    • new Integer(String s).intValue();
    • Integer.parseInt(String s);
  • char的包装类之外,其它类都有parseX()方法
  • JDK5具有自动装箱与自动拆箱特性;但对象为null时,不能使用该特性,会出现空指针异常
  • 当使用int的字面值常量进行初始化时,若值小于127,则对象为同一个对象,该对象存放在常量池