课时84:包装类实现原理分析

简介: 课时84介绍了Java中包装类的实现原理,包括其概念、作用及演变。包装类用于将基本数据类型转换为对象,便于在面向对象编程中使用。课程详细讲解了包装类的概念、认识包装类的重要性,并通过Int类型的范例展示了装箱与拆箱的过程。此外,还介绍了Number类及其子类(如Integer、Byte等)和Boolean、Character类,解释了它们如何继承自Object类并提供基本数据类型的对象表示。最后,总结了Number类中的六个常用方法,帮助理解如何从包装类中获取基本数据类型值。

课时84:包装类实现原理分析


摘要:

1.包装类的概念

2.认识包装类

3.范例

 

01.包装类的概念

 

在 Java 开发中至关重要的概念——包装类。包装类的主要功能是实现基本数据类型的对象转换,随着 JDK 版本的更新,包装类的功能也在不断演变,提供了更多的支持。

 

02.认识包装类

 

认识包装类。Object 类最大的特点是所有类的父类,并且能够接受所有数据类型。但是在过程中面临一个问题,基本数据类型并不是一个类,若想将基本数据类型以类的形式进行处理,就需要对其进行包装。

 

03.范例

 

以 Int 数据为例,实现一个包装处理的定义。

class Int {
private int data;//包装了一个基本数据类型
public Int(int data){
this.data=data ;
}
public int intValue(){
return this.data ;
}
}
public class JavaDemo {
public static void main(string args[]){
Object obj=new Int(10);//装箱:将基本数据类型保存在包装类之中
Int x=((int)obj).intvalue();//拆箱:从包装类对象中获取基本数据类型
System.out.println(x*2);
}
}

image.png

包装之后以一个对象的形式进行处理了,通过 Object 接收。将基本数据类型保存在包装类中,这一过程称为装箱。基本数据类型进行包装处理后可以像对象一样进行引用传递,同时也可以使用 Object 类来进行接收。


但是如果可以发现基本数据类型与 Object  类型之间的缺陷,那么 jdk 也早就发现了同样的问题,所以在 JDK 1.0 在早期版本提供了包装类的概念,这一概念在JDK 1.5中得到了进一步的深化。基本数据类型总共有八种,因此有相对应的八种包装类。Object 类是所有类的父类。

image.png

第一个是 Number 位,Number 位是一个抽象,因此拥有一个称为 Number 的处理类,将此位置称为抽象位。Integer  有个原始类型Int,Byte,Long,Short,Float,Double,都是 Number 的子类。

image.png

Number 在整个过程中描述的是一种数字的概念,基本数据类型实际上应该包含多种,一种叫做 Boolean,另一种是字符型Character。

image.png

现在大致能够识别出包装类中的具体形式。布尔型不可能是数字类型,这里就直接告诉布尔值就是子类。若存疑,可查阅文档以确认。

image.png

因此通过代码,应当能够明确了解当前的情况。Java 中的包装类分为两种类型:

对象型包装类(Object 直接子类):Boolean、Character

数值型包装类(Number 直接子类):Byte、Long、Short、Float、Double、Integer


其中特别强调的是 Number 类,Number 类是一个抽象类。在抽象类中通过其真正的定义发现,仅在普通类的基础上增加了抽象方法。现在将探讨Number位中具体有哪些抽象方法,请查阅相关文档进行观察。希望各位同学能够记住这些抽象方法。

image.png

已经明确列出了所有主要类型。

image.png

以后只要看到 number,就要清楚地认识到代表的是数字的概念。

No.

方法名称

类型

 

01

public byte byteValue( )

 

普通

从包装类中获取Byte数据

02

public short shortValue( )

 

普通

从包装类中获取 Short 数据

03

public abstract int intValue()

普通

从包装类中获取 Int 数据

04

public abstract long longValue()

 

普通

从包装类中获取 Long 数据

05

public abstract float floatValue()

 

普通

从包装类中获取 Float  数据

06

public abstract double doubleValue()

 

普通

从包装类中获取 Double数据

Number 类中的方法就是直接提供有获取包装类中基本数据类型的功能,一共只定义有六个方法。希望能清楚记住 Number 类,这将对你们有极大帮助。

相关文章
|
Kubernetes Cloud Native 网络协议
云原生下的开发测试实践
近日,阿里巴巴旗下企业级一站式DevOps平台——阿里云·云效正式开启公测,为了让广大开发者更好地了解“新云效”,《云效说码》栏目特别策划了《为云研发而生 解密云效公测版专场》系列分享,邀请了多位阿里巴巴技术专家通过视频直播的方式与大家在线交流,分享云效产品的亮点和技术优势。本系列分享共有五节内容,本文整理自阿里巴巴技术专家林帆(金戟)和郑云龙(砧木)的视频分享《云原生下的开发测试》。
1754 99
云原生下的开发测试实践
|
机器学习/深度学习 算法
【基础回顾】在回归任务中常见的损失函数比较(mse、mae、huber)
【基础回顾】在回归任务中常见的损失函数比较(mse、mae、huber)
1523 0
【基础回顾】在回归任务中常见的损失函数比较(mse、mae、huber)
|
11月前
|
缓存 前端开发 JavaScript
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第27天】在现代前端开发中,构建工具的选择对项目的效率和可维护性至关重要。本文比较了Webpack和Gulp两个流行的构建工具,介绍了它们的特点和适用场景,并提供了配置优化的最佳实践。Webpack适合大型模块化项目,Gulp则适用于快速自动化构建流程。通过合理的配置优化,可以显著提升构建效率和性能。
204 2
|
7月前
|
Oracle Java 关系型数据库
课时48:JavaDoc文档简述
主要讲解了Java DOC文档的使用方法和技巧。首先,介绍了Java DOC的简介,强调了在开发过程中需要大量使用API文档。其次,详细解析了Java DOC的组成结构,包括位的完整定义、类的相关说明以及方法的详细解释。 1.Java DOC简介 2.Java DOC文档的组成
163 20
|
7月前
|
Java 程序员 数据处理
课时19:Java运算符(位运算符)
课时19介绍Java中的位运算符,涵盖进制转换、位与、位或及移位操作。重点讲解了二进制与其他进制的转换方法,通过具体范例演示了位与和位或运算的过程,并展示了八进制和十六进制的处理方式。此外,还解释了逻辑运算符(&&、||)与位运算符(&、|)的区别及其应用场景,特别是位运算在加密中的应用。
153 5
|
7月前
|
Java
课时18:Java运算符(逻辑运算符)
课时18介绍了Java中的逻辑运算符(与、或、非)。通过范例详细讲解了非操作的使用,展示了如何正确应用逻辑非(!)。接着分别探讨了与操作(& 和 &&)及或操作(| 和 ||),强调了短路运算符(&& 和 ||)在性能和安全性上的优势。课程通过具体代码示例演示了不同逻辑运算符的效果及其应用场景。
176 5
|
7月前
|
Java C++
课时124:assert断言
assert断言的含义以及使用 1.断言的引入 2.生活实例理解断言 3.Java 中断言的使用
162 2
|
7月前
|
Java
课时10:Java数据类型划分(整型类型)
本文主要围绕Java中整型数据展开,详细讲解整型变量、常量的概念,整型数据运算规则,包括数据溢出问题及解决方法,数据类型转换(自动转换与强制转换)的原理和注意事项,同时介绍了整型数据默认值的相关知识,以及byte数据类型与int数据类型的关系和使用场景,帮助读者全面掌握Java整型数据的相关内容。
191 4
|
7月前
|
Java 开发者
课时98:泛型接口
本文聚焦Java泛型接口,阐述泛型不仅能在位(类)上定义,还可在接口中使用。通过实际代码示例,详细介绍泛型接口的定义以及子类实现泛型接口的两种方式,帮助读者理解其概念和应用,强调在实际编程中理解和掌握这些知识的重要性。 1.泛型接口的定义 2.泛型接口的子类实现方式
153 2
|
7月前
|
测试技术
课时108:用例图
课时108介绍了用例图的设计与描述。用例图用于展示系统中不同角色的功能分配,如系统管理员拥有系统初始化、备份、公告发布等功能,而普通管理员仅负责公告管理。通过建立Use Cases图,可以直观呈现各角色的具体功能,帮助在项目设计阶段明确角色权限和职责。用例图是详细设计和概要设计的重要组成部分,有助于清晰表达系统的功能结构。
170 1