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只有两种状态truefalseboolean类型占用 1 个字节boolean类型适用于逻辑运算, 一般用于程序流程控制
注意:
Java 不可用除了false和true之外的任何数字或字符表示 真 或 假。

浙公网安备 33010602011771号