Lazy loaded image
编程
📕Day12-面向对象6(枚举、包装类)
字数 2253阅读时长 6 分钟
2019-1-24
2025-8-13
type
status
date
slug
summary
tags
category
icon
password

枚举

枚举的使用,枚举也被称为穷举,就是把所有可能的情况都列举出来。eg: Month(月份)类, Season(季节)类, Day(星期)类
综上这几个类的特点是,通过这个类能够创建出来的实例对象个数是固定并且明确的,因此可以把这几个类创建的实例对象都罗列出来。此时,可以考虑使用枚举来完成
枚举是JDK5新增的语法,同时也可以手动实现枚举

手动实现枚举的步骤

  1. 构造方法私有化,禁止外部调用构造方法创建实例对象
  1. 在类的内部使用 public static final 定义静态成员常量,列举出所有的实例对象
  1. 外部直接通过 类名.实例对象名 访问定义好的实例对象!

枚举的特点

  1. 使用关键字 enum 来声明一个枚举类型
  1. 枚举第一行有效代码必须要列举出所有的实例对象
  1. 只需要列举出所有的实例对象名即可,不用使用 new 构造方法() 创建实例对象
  1. 枚举里也可以定义成员变量,但是必须要保证所有的实例对象枚举放在第一行
  1. 枚举还可以定义构造方法,但是构造方法只能被private修饰,默认也是被private修饰
  1. 和普通类一样,枚举也有默认的空参构造方法,如果自定义了构造方法,默认空参的构造方法就被覆盖了
  1. 所有的枚举类型默认都继承自 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

基本包装类的应用场景

  1. 泛型里只能使用引用数据类型,不能使用基本数据类型
  1. 一个基本数据类型可以自动转换成为引用数据类型;但是基本数据类型的数组,不能自动转换成为引用数据类型的数组。 int x = 3; Object obj = x; 自动将基本数据类型int转换成为引用数据类型Integer int[] arr = {1, 2, 3}; Object[] nums = arr; 报错,不能把基本数据类型的数组自动转换成为引用数据类型的数组!
  1. 在数据库里,如果一个整数是空,数据库里使用 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(): 将数字转换成为十六进制数字
上一篇
Day11-面向对象5(内部类、代码块、类和对象的初始化)
下一篇
Day13-内置类(String,StringBuilder,StringBuffer)