行业资讯 2025年08月6日
0 收藏 0 点赞 275 浏览 4552 个字
摘要 :

文章目录 Java 基本类型 布尔类型 Java 整型 byte short char int long 浮点类型 数字如何存储在内存中? float double 结论 Java中的所有值都分为两类:引用类型……




  • Java 基本类型
  • 布尔类型
  • Java 整型
    • byte
    • short
    • char
    • int
    • long
  • 浮点类型
    • 数字如何存储在内存中?
    • float
    • double
  • 结论

Java中的所有值都分为两类:引用类型和原始类型。了解Java 中的所有八种基本数据类型、它们的内存大小、默认值以及最大值和最小值范围

Java 基本类型

原始数据类型由 Java 语言预定义并由保留关键字命名。所有原始类型都可以分为两组:布尔类型和数字类型。

让我们看看下图中的每种基本数据类型。Java 8种基本数据类型和范围

原始类型 内存大小 默认值 范围
boolean 8位 错误的 是真是假
byte 8 位,有符号整数 0 -128 至 127(含)
char 16 位,Unicode 字符 \\u0000 或代码点 0 0 至 65535
short 16 位,有符号整数 0 -32,768 至 32,767(含)
int 32 位,有符号整数 0 -2 31至 2 31 – 1
long 64 位,有符号整数 0 -2 63至 2 63 – 1
float 32 位,IEEE 754,浮点值 0.0 1.4E-45 至 3.4028235e38(6-7 位有效小数)
double 64 位,IEEE 754 0.0 4.9E-324 至 1.7976931348623157e308(15 位有效小数)

布尔类型

布尔数据类型只有两个有效值:truefalse。这两个值称为布尔值。我们可以使用布尔,如下例所示。

boolean done; // Declares a boolean variable named done
done = true;  // Assigns true to done

//or

boolean done = true;  //Declare and assign in the same line

需要注意的重要一点是,布尔变量不能转换为任何其他数据类型,反之亦然。Java 没有指定布尔数据类型的大小。它的大小由 JVM 实现决定。通常,布尔数据类型的值在内部存储在字节中。

Java 整型

整型数据类型是一种数值数据类型,其值是整数类型。Java 提供了五种整数类型。整数类型占用内存量:

byte

  • 字节数据类型是一种 8 位有符号 Java 原始整数数据类型。
  • 其范围是-128 到 127。这是Java 中可用的最小整数数据类型。
  • int与和文字不同long,没有字节文字。
  • 但是,您可以将字节范围内的任何int文字分配给字节变量。
byte b1 = 125;
byte b2 = -11;

如果将文字分配intbyte变量并且该值超出字节数据类型的范围,Java 会生成编译器错误。以下代码段将产生编译器错误:

// An error. 150 is an int literal outside -128 to 127
byte b = 150;

Java 不允许将较高范围数据类型变量的值分配给较低范围数据类型的变量,因为进行此类分配可能会损失精度。您必须使用强制转换来进行从int到byte的此类分配。

byte b = (byte) num; // Ok

short

  •  数据short类型是16 位有符号Java 原始整数数据类型。其范围是-32768 到 32767。
  • 与int和long文字不同,没有短文字。
  • 但是,您可以将短整型(-32768 到 32767)范围内的任何int文字分配给短整型变量。
short s1 = 12905;   // ok

short s2 = -11890;  // ok

字节变量的值总是可以分配给short变量,因为字节数据类型的范围落在short数据类型的范围内。从int或long变量向short变量赋值的所有其他规则与byte变量的分配规则相同。

char

  • char 数据类型是16 位无符号Java 原始数据类型。
  • 它代表一个Unicode 字符
  • 请注意,char是无符号数据类型。因此,char变量不能具有负值。
  • char 数据类型的范围是0 到 65535,这与 Unicode 集的范围相同。
  • 字符文字表示 char 数据类型的值。
char c1 = \'A\';
char c2 = \'L\';
char c3 = \'5\';
char c4 = \'/\';

字符文字也可以表示为字符转义序列。字符转义序列以反斜杠开头,后跟一个字符,并且两者都用单引号引起来。

八种预定义的字符转义序列,如下所示:

字符转义序列 描述
‘\\n’ 换行
‘\\r’ 回车
‘\\F’ 换页
‘\\b’ 一个退格键
‘\\t’ 一个选项卡
‘\\\\’ 反斜杠
‘\\” 双引号
‘\\’ 单引号

这些只是 Java 中的八个字符转义序列。您无法定义自定义字符转义序列。

字符文字还可以表示为以下形式的 Unicode 转义序列\'\\uxxxx\',这里,\\u(紧跟小写 u 的反斜杠)表示 Unicode 转义序列的开头,xxxx正好表示四个十六进制数字。

char c1 = \'A\';
char c2 = \'\\u0041\';  // Same as c2 = \'A\'

int

  • 数据int类型是32 位有符号Java 原始数据类型。该数据类型的变量int占用32 位内存
  • 其有效范围为-2,147,483,648至2,147,483,647(-2 31至 2 31 – 1)。
  • 此范围内的所有整数都称为整数文字(或整数常量)。例如,10、-200、0、30、19等都是int的整数字面量。

可以将整数文字分配给int变量,例如counter,如下所示:

int counter = 21;

Java 有一个名为 的包装类Integer,它定义了两个常量来表示 int 数据类型的最大值和最小值,Integer.MAX_VALUE以及Integer.MIN_VALUE。它是 int 值的对象表示。

int max = Integer.MAX_VALUE; // Assigns maximum int value to max
int min = Integer.MIN_VALUE; // Assigns minimum int value to min

long

  • long数据类型是一种64 位有符号Java 原始数据类型
  • 当整数的计算结果可能超出int数据类型的范围时使用它。
  • 其范围是 -2 63到 2 63 – 1。
  • long 范围内的所有整数称为long 类型的整数字面量

long 类型的整数文字始终以“L”(或小写“l”)结尾。

long num1 = 0L;
long num2 = 401L;
long mum3 = -3556L;

即使long变量中存储的值完全在数据类型的范围内int,如果没有显式类型转换,也不允许从 long 到 int 赋值,如下例所示:

int num1 = 5;
long num2 = 25L;

// A compile-time error. Even if num2\'s value 25 which is within the range of int.
num1 = num2;

如果要将long变量的值赋给int变量,则必须在代码中显式提及这一事实,以便 Java 确保您意识到可能存在数据溢出。您可以使用 Java 中的“强制转换”来完成此操作,如下所示:

long num1 = (int) num2; // Now it is fine because of the \"(int)\" cast

通过编写(int)num2,您指示 Java 将存储的值视为num2int。在运行时,Java 将仅使用 的 32 个最低有效位num2,并将存储在这 32 位中的值分配给num1。如果num2有一个值超出了 int 数据类型的范围,你将不会得到相同的值,num1并且会导致数据丢失

Java有一个类Long(注意Long中的大写L),它定义了两个常量来表示long数据类型的最大值和最小值,Long.MAX_VALUE以及Long.MIN_VALUE

long max = Long.MAX_VALUE;
long min = Long.MIN_VALUE;

浮点类型

包含小数部分的浮点数称为实数,例如 3.25、0.49、-9.19 等。

数字如何存储在内存中?

当实数转换为其二进制表示形式时,计算机还必须存储该数字中小数点的位置。有两种策略可以在计算机内存中存储实数。

  1. 定点”数字格式– 仅存储数字的二进制表示形式,并假设该点之前和之后始终有固定数量的数字。一个点在数字的十进制表示中称为小数点,在二进制表示中称为二进制点。点的位置始终固定为数字的表示类型称为“定点”数字格式。
  2. 浮点”数字格式——存储实数的二进制表示形式以及实数中的点的位置。由于在这种实数表示中,点前后的位数可能不同,因此我们说该点可以浮动。这种表示形式称为“浮点”格式。

与定点表示相比,浮点表示速度较慢且精度较低。然而,与定点表示相比,浮点表示可以使用相同的计算机内存处理更大范围的数字。

Java 支持“浮点”数字格式。

Java 有两种浮点数值数据类型:

  • float
  • double

float

float 数据类型使用32 位以IEEE 754 标准格式存储浮点数(单精度浮点数)。它可以表示小至 1.4 x 10 -45、大至 3.4 x 10 38(大约)的实数。该范围仅包括幅度。它可以是积极的,也可以是消极的。

所有以“f”或“F”结尾的实数称为浮点文字

float f1 = 8F;
float f2 = 8.F;
float f3 = 8.0F;

float 数据类型定义两个无穷大:正无穷大和负无穷大。例如,除以的结果2.5F0.0F浮点正无穷大,而除以的结果2.5F-0.0F浮点负无穷大。

浮点上的某些操作的结果未定义。这些结果由浮点数据类型NaN(非数字)的值表示。

Float类定义了三个常量,分别表示浮点数据类型的正无穷大、负无穷大和 NaN。还有两个常量,它们表示可以存储在浮点变量中的最大和最小(大于零)浮点值。

Float.POSITIVE_INFINITY
Float.NEGATIVE_INFINITY
Float.NaN 
Float.MAX_VALUE
Float.MIN_VALUE

 

请注意,所有整型(int、long、byte、short 和 char)的值都可以分配给 float 数据类型的变量,而无需使用显式强制转换,但是 float 值在分配给之前必须进行强制转换任何整型数据类型 int、long、byte、short 或 char 的变量。

double

双精度数据类型使用64 位以“IEEE 754 标准格式”存储浮点数。根据 IEEE 754 标准以 64 位表示的浮点数也称为双精度浮点数

所有实数都称为双精度数。双文字可以选择以“d”或“D”结尾,例如 19.27d。但是,后缀 d 或 D 在双精度文字中是可选的。也就是说,19.27 和 19.27d 都表示相同的双精度字面值。

double d1 = 8D
double d2 = 8.;
double d3 = 8.0;
double d4 = 8.D;

与浮点数据类型类似,双精度数据类型定义最大值、最小值、两个无穷大和一个 NaN 值。

Double.POSITIVE_INFINITY 
Double.NEGATIVE_INFINITY
Double.NaN
Double.MAX_VALUE
Double.MIN_VALUE 

结论

在这篇文章中,我们详细了解了原始类型及其范围。一些科学或密码应用程序要求我们存储和操作非常大(或非常小的)数字,并且重视准确性而不是性能。如果我们需要比原始类型提供的更大的数字,我们可以使用java.Math 包中的BigInteger、BigDecimal  。这些类别提供近乎无限的大小或精度。

归属教程 Java基础教程

文章目录 前言  第1章 Java语言基础 第2章 流程控制语句 第3章 面向对象编程 第4章 Java 字符 […]

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9033.html

管理员

上一篇: Java注释
相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号