type
status
date
slug
summary
tags
category
icon
password
枚举
枚举的使用,枚举也被称为穷举,就是把所有可能的情况都列举出来。eg: Month(月份)类, Season(季节)类, Day(星期)类
综上这几个类的特点是,通过这个类能够创建出来的实例对象个数是固定并且明确的,因此可以把这几个类创建的实例对象都罗列出来。此时,可以考虑使用枚举来完成
枚举是JDK5新增的语法,同时也可以手动实现枚举
手动实现枚举的步骤
- 构造方法私有化,禁止外部调用构造方法创建实例对象
- 在类的内部使用 public static final 定义静态成员常量,列举出所有的实例对象
- 外部直接通过 类名.实例对象名 访问定义好的实例对象!
枚举的特点
- 使用关键字 enum 来声明一个枚举类型
- 枚举第一行有效代码必须要列举出所有的实例对象
- 只需要列举出所有的实例对象名即可,不用使用 new 构造方法() 创建实例对象
- 枚举里也可以定义成员变量,但是必须要保证所有的实例对象枚举放在第一行
- 枚举还可以定义构造方法,但是构造方法只能被private修饰,默认也是被private修饰
- 和普通类一样,枚举也有默认的空参构造方法,如果自定义了构造方法,默认空参的构造方法就被覆盖了
- 所有的枚举类型默认都继承自 Enum类,Java又是单继承,自定义的枚举类型不能再继承自任何的类
基本包装类型
回顾:数据类型分为两大类
基本数据类型: byte short int long float double char boolean
引用数据类型: 数组 、 类 、 接口 、 枚举 、 注解
基本数据类型的特点是计算方便快捷,可以使用运算符快速实现操作
引用数据类型适用于存储比较复杂的结构,功能齐全,可以使用面向对象的语法来操作
绝大部分情况下,数字使用基本数据类型,但是在特殊情况下,需要将基本数据类型转换成为对应的引用数据类型,在这里,我们引用了基本包装类
基本数据类型 | 引用数据类型 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
基本包装类的应用场景
- 泛型里只能使用引用数据类型,不能使用基本数据类型
- 一个基本数据类型可以自动转换成为引用数据类型;但是基本数据类型的数组,不能自动转换成为引用数据类型的数组。 int x = 3; Object obj = x; 自动将基本数据类型int转换成为引用数据类型Integer int[] arr = {1, 2, 3}; Object[] nums = arr; 报错,不能把基本数据类型的数组自动转换成为引用数据类型的数组!
- 在数据库里,如果一个整数是空,数据库里使用 null表示; 如果和数据库对应的java对象使用的是基本数据类型,当数据库里数据为空时,会报错 在Java类和数据库里的字段对应时,推荐使用基本包装类型。
自动装箱拆箱
基本数据类型和基本包装类型之间,可以转换
基本数据类型 --> 基本包装类型 装箱
基本包装类型 --> 基本数据类型 拆箱
==运算符 没有对引用数据类型(数组)拆箱,没有把引用数据类型转换成为基本数据类型
==运算符可以用来比较两个对象,用来判断两个对象的内存地址是否相同!
另外引用数据类型之间比较内容,不要使用 ==,而要使用 equals!!!
自动装箱、自动拆箱
装箱: 基本数据类型 --> 引用数据类型 自动装箱
拆箱: 引用数据类型 <-- 基本数据类型 自动拆箱
基本包装类的方法和属性
基本包装类型里的常见方法和属性,基本包装类型提供了一些通过实例对象调用的实例方法
例如: toString() ,intValue 等方法,很少使用
基本包装类型里,还提供了大量的 static 方法(工具类)
static修饰的方法特点: 可以通过类名直接调用,不同创建实例对象。
parseInt(String s): 将字符串类型的 s 按照十进制转换成为数字类型
parseInt(String s,int radix): 将字符串按照指定的进制转换
radix取值范围是从 2 到 36
valueOf(int i): 把int类型的变量转换成为Integer类型(装箱)
toBinaryString():将数字转换成为二进制字符串
toOctalString(): 将数字转换成为八进制字符串
toHexString(): 将数字转换成为十六进制数字
- 作者:tacjin
- 链接:http://jin.wiki/article/73f6c265-f50f-4894-9c41-b8f84b2428df
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。