Java 之 数据类型
Java 之 数据类型
在了解数据结构之前需要先了解一下容量单位是怎么回事
bit
是计算机最小的容量单位往上还有 byte
K
M
G
等等,他们之间的单位转换分别是:
1byte
= 8bit
1K
= 1024byte
1M
= 1024K
1G
= 1024M
先有了这个概念,才能明白 Java
的设计者为什么要设计这么多种数据类型
Java数据类型分为两大类, 基本类型和引用类型
基本数据类型又分为三类 分别为
在Java中每一种数据都定义了明确的数据类型,在内存中分配了不同大小的空间(bytes)
整数类型
- Java各整数类型有固定的范围和字段程度,不受具体操作系统的影响,以保证Java程序的可移植性。
- ⭐Java的整数常量默认为
int
类型,声明long
型常量必须后加l
或L
。 - Java程序中变量通常声明为
int
类型,除非不足以表示大数,才使用long
。 bit
计算机中的最小储存单位。byte
计算机中基本储存单元,1byte
=8bit
-
byte 字节类型
- byte 类型占用字节为 1 bytes 即 1 字节
- 存放范围 -128 ~ 127
-
short 短整型
- short 类型字节占用为 2 bytes 即 2 字节
- 存放范围 -2^15 ~ 2^15 - 1
-
int 整型
- int 类型字节占用为 4 bytes 即 4 字节
- 存放范围 -2^31 ~ 2^31 - 1
-
long 长整型
- long 类型字节占用为 8 bytes 即 8 字节
- 存放范围 -2^63 ~ 2^63 - 1
-
解释占用空间:
-
假设我现在分别使用
byte
类型 和short
类型用来存储整数5
-
public class Dateail { public static void main (String[] args) { // 声明变量类型 byte b_num; short s_num; // 给变量赋值 b_num = 5; s_num = 5; } }
-
在我们看来这是一样的,但是计算机存储这两个数的方式却不一样。
-
计算机会先把 整数
5
转换为二进制00000101
存储到对于的储存空间 如图: -
-
它尽管
5
这个数字不需要 2个字节的空间,但是 Java 依旧会按照你指定的类型开辟出相对于的空间存储5
这是为了防止以后 需要储存的值小于或大于这个类型的存储范围。
-
-
注意事项:
- 占用空间小的类型可以转换成占用空间大的类型,反之不行。
Java
整型常量默认是int
类型 声明long
类型最好在值后面加上l
或L
。
浮点类型
-
与整数类型类似,Java浮点类型也有固定的范围和字段长度,不受具体操作系统影响。
-
Java的浮点类型常量默认为double型,声明float型常量,须后加
f
或F
-
浮点类型常量有两种表示形式
十进制数形式:如 5.12 512.0f .512 (必须带有小数点)
科学计数法形式:如 5.12e2 [5.12 * 10^2] 5.12E-2 [5.12 / 10^2]
-
⭐通常情况下,应该使用double型,因为它比float型更精确。
-
⭐浮点类型存在陷阱,下面注意事项讲解
浮点数在计算机中的存放方式: 浮点数 = 符号位 + 指数位 + 尾数位
**注意: **
浮点数陷阱:
⭐当我们使用运算结果是小数的数进行相等判断时,要小心
double number1 = 2.7;
double number2 = 8.1 / 3;
// 得出的结果是
// number1 2.7
// number2 2.6999999999999997
解决方法:
要对运算结果是小数的结果与其他数值进行比对,一个使用这两个数值相减的绝对值取某一精度进行比对。例如:
if (Math.abs(number1 - number2) < 0.000001) {
System.out.println("误差值小于0.000001");
}
这样只要误差值小于我们设置的值该条语句就会执行。
浮点数的尾数部分可能丢失,造成精度损失(小数都是近似值)
- float 单精度
- float 类型字节占用为 4 bytes
- 存放范围 -3.403E38 ~ 3.403E38
- double 双精度
- double 类型字节占用为 8 bytes
- 存放范围 -1.798E308 ~ 1.798E308
字符类型
char
类型占用 2个字节 可存放汉字- ⭐字符常量是用单引号
''
括起来的单个字符。例如char c1 = 'a'
char c2 = '1'
char c3 = '發'
- Java中还允许使用转义字符
\
来将其后的字符转变为特殊字符型常量。例如char c1 = '\t'
- 在Java中,char本质是一个整数,默认输出的是
unicode
码对应的字符。 - 可以直接给
char
赋一个整数,然后输出时,它会按照对应的Unicode
字符输出。 char
类型是可以进行运算的,相当于一个整数,因为它都有对应的Unicode
码。
重点:
char
在 Java 中的保存与加载顺序:(以字母 a
举例)
保存: 'a'
===> Unicode 码值 97
===> 二进制 1100001
===> 存储
加载: 读取
===> 二进制 1100001
===> Unicode 码值 97
===> 'a'
布尔类型
boolean
只有两种状态true
false
boolean
类型占用 1 个字节boolean
类型适用于逻辑运算, 一般用于程序流程控制
注意:
Java 不可用除了false
和true
之外的任何数字或字符表示 真
或 假
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具