云开·全站app

而在 C/C++ 中字符型只占用 1 字节云开

发布日期:2024-06-08 19:26    点击次数:134

在 Java 中,数据类型分为两大类:基本类型和援用类型。本文将先容 Java 的八种基本数据类型。

八种基本数据类型

Java 的基本数据类型共八种,不错归为四类:

整型(byte、short、int、long)浮点型(float、double)字符型(char)布尔型(boolean)

1. 整型

整型包括 byte、short、int 和 long。这些类型不错存储负数、零和正数,具体的存储机制将在后续著作中详备先容。

2. 浮点型

浮点型包括 float 和 double。尽管 float 和 int 都占用 4 字节,但 float 不错示意的范围(-3.43E38 ~ 3.43E38)远超 int。预备机怎样使用二进制存储浮点数,以及浮点数运算为何不精准,将在后续著作中斟酌。

3. 字符型

Java 的字符型(char)占用 2 字节,而在 C/C++ 中字符型只占用 1 字节。

4. 布尔型

boolean 类型唯有 false 和 true 两个取值。尽治表面上 1 个二进制位足以示意布尔值,但推行使用时,JVM 袭取 1 字节来示意 boolean 类型,这与内存地址按字节存储关系。字节对皆使得用 1 字节来竣事 boolean 类型更为高效。

基本类型调换

Java 中,除了 boolean 类型,其他基本类型之间不错彼此调换。基本类型调换分为自动类型调换和强制类型调换。

2.1 自动类型调换

自动类型调换(隐式类型调换)发生在从小范围类型向大范围类型调换时,轨则如下:

byte 自动调换为:short、int、long、float、doubleshort 自动调换为:int、long、float、doublechar 自动调换为:int、long、float、doubleint 自动调换为:long、float、doublelong 自动调换为:float、doublefloat 自动调换为:double

2.2 强制类型调换

除了上述自动调换轨则,其他类型之间的调换需要显式声明,即强制类型调换。

自动装箱与拆箱

在 Java 中,一切皆对象,八种基本数据类型都有对应的包装类。

基本类型和包装类之间不错彼此调换,包括显式和隐式调换。

3.1 显式调换

3.2 隐式调换

3.3 扎眼点

自动装箱拆箱诚然肤浅,但会花费性能。如下代码由于常常的装箱拆箱会导致性能问题:

上述代码中 count += 1 会触发自动拆箱、加法操作和自动装箱,导致生成无数 Integer 对象。处罚措施是将 count 声明为基本类型 int。

常量池技艺

来看以下代码:

关于第一条打印语句,会触发自动拆箱,基本类型比拟复返 true;第二条打印语句中 a 和 b 援用不同对象,复返 false;第三条打印语句中 a 和 c 援用调换对象,复返 true,这是因为常量池技艺。

包装类(如 Integer)使用常量池技艺缓存了 -128 到 127 之间的对象。通过自动装箱(即 valueOf() 措施)创建的 Integer 对象,要是值在 -128 到 127 之间,会平直从常量池复返,不然调用 new 措施创建新对象。

平日建筑中,优先使用以下两种容貌创建整型对象,因为第一种容貌不会使用常量池技艺:

除了 Integer,其他包装类也使用了常量池技艺:

Long、Short、Byte 缓存 -128 到 127 之间的对象Character 缓存 0 到 127 之间的对象Float 和 Double 不适用常量池技艺Boolean 唯有两个值,不需要常量池

基本类型和包装类

5.1 优缺陷

基本类型变量平直存储数据自己,而包装类存储对象援用。基本类型在存储空间和读写后果上优于包装类型。举例,Integer 对象占用 16 字节内存,而 int 仅占 4 字节。包装类则提供了丰富的措施,便于竣事复杂功能。

5.2 怎样选定

技俩建筑中,优先使用基本类型,举例措施中的临时变量、轮回变量。以下情况使用包装类:

映射数据库实体类时,将数据库字段的 null 值映射为实体类的 null映射接口苦求的 DTO 时,将苦求中的 null 值映射为 DTO 中的 null基本类型的默许值有业务意旨时,使用包装类的 null 示意无业务意旨

追思

Java 中的 8 种基本数据类型占用内存和示意范围各不调换,使用场景也不同。基本类型之间不错彼此调换,包括隐式调换和显式调换。基本类型和包装类之间不错彼此调换,称为装箱和拆箱。常量池技艺用于缓存常用的包装类对象。在建筑中,临时变量优先使用基本类型,而针对 null 具有荒谬意旨的情况使用包装类。

要是你念念要了解编程云开,请点击贯穿稽查细目,这里有初学试听课程!





Powered by 云开·全站app @2013-2022 RSS地图 HTML地图