字面量
数据在程序中的运行格式
字面量类型
- 整数类型:不带小数点的数字
- 浮点数类型:带小数点的数字
- 字符串类型:用双引号括起来的多个字符
- 字符类型:用单引号括起来的单个字符
- 布尔类型:true/false
- 空类型:null
基本数据类型
-
整型
整型 取值范围 内存占用 byte $-2^7 到 2^7-1 $ 1 short $-2^{15} 到 2^{15}-1 $ 2 int $-2^{31} 到 2^{31}-1 $ 4 long(字面量之后加上大写L) $-2^{63} 到 2^{63}-1 $ 8 -
浮点数
浮点数 取值范围 内存占用 float(字面量之后加上大写F) 4 double 8 -
字符
字符 取值范围 内存占用 char 2 -
布尔
布尔 取值范围 内存占用 boolean
拓展知识
基本数据类型的特性
- 大小固定:每种基本类型在不同的操作系统和平台上占用的内存大小是固定的,保证了跨平台的一致性。
- 不支持 null:基本类型不能为
null
,它们在声明时会有默认值,例如int
的默认值是 0,boolean
的默认值是false
。 - 性能更高:基本类型直接存储在栈内存中,操作效率高于包装类型(如
Integer
、Double
)。
基本数据类型的默认值
byte
、short
、int
、long
的默认值是0
。float
、double
的默认值是0.0
。char
的默认值是'\u0000'
。boolean
的默认值是false
。
提示
boolean
的存储:
虽然 boolean
类型在逻辑上只占用 1 位,但 Java 的虚拟机对 boolean
的存储通常会根据系统架构分配 1 字节或更多位数的空间。这是因为 CPU 通常按字节操作内存,而非按位。
数据类型转换
数据类型不同不能直接参与运算,需要进行类型转换后再进行运算
隐式类型转换
将取值范围小的数据赋值给取值范围大的数据类型时,程序自动进行类型转换
提升规则
- 取值范围小的数据类型和取值范围大的数据类型大的进行运算,取值范围小的数据类型先提升为取值范围大的数据类型大的再进行运算
- byte,short,char在运算时直接提升为int再运算
显式类型转换
不允许直接将取值范围大的数据赋值给取值范围小的数据类型,需要开发者进行强制类型转换
语法格式
|
|
注意事项
- 将 double/float 强制转为 int 时会截断小数部分
- Java具有常量优化机制,编译器在编译过程中,将能够在编译期确定的常量表达式直接计算并替换成结果