【Java】基本数据类型
Java 数据类型
基本数据类型:
- 整型:
byte \ short \ int \ long
- 浮点型:
float \ double
- 字符型:
char
- 布尔型:
boolean
引用数据类型:
- 类(
class
) - 接口(
interfac
) - 数组(
array
)
容量
- 整型:
byte
(1字节=8bit) \short
(2字节)\int
(4字节)\long
(8字节) - 浮点型:
float
(4字节) \double
(8字节) - 字符型:
char
(1字符=2字节)
注意:定义long型变量,必须以"l"或"L"结尾;定义float类型变量时,变量要以"f"或"F"结尾
整型常量默认为int类型,浮点类型常量默认为double类型。
自动类型提升
自动类型提升:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte 、char 、short --> int --> long --> float --> double
特别的:当byte、char、short三种类型的变量做运算时,结果为int型
float
和double
类型的变量相加时,结果为double
类型。
强制类型转换
强制类型转换:从容量大的类型转换成容量小的类型。它是自动类型提升运算的逆运算。其中容量大小指的是,表示数的范围的大小。比如:float
容量要大于long
的容量
注意事项
- 情况1:编译不出错,因为右边的123456默认是
int
类型,转给long
类型时为自动类型提升(小转大,不出错)
1 | long num = 123456; |
- 情况2:编译出错——过大的整数。因为右边的数默认为int类型,但因为该数字过大超过了
int
类型的范围,所以会报错。此时需要再其后面加上"l"
或"L"
。
1 | long num = 12345678987654321; |
- 情况3:编译出错——不兼容的类型:从
double
转换到float
可能会有损失。因为右边的12.3默认为double
类型,不能直接转换,需要加上强制类型转换(float)12.3
。此时需要再其后面加上"f"
或"F"
。
1 | float f1 = 12.3; |
- 情况4:编译出错——不兼容的类型:从int转换到byte可能会有损失。因为此时的 1 默认是int类型,不能直接转换,需要加上强制类型转换。
1 | byte b = 12; |
进制转换
二进制转十进制细节:https://www.bilibili.com/video/BV1Kb411W75N?t=470&p=64
计算机底层使用补码的方式存储数据
基本数据类型使用示例
1 | class VariableTest { |
整数类型扩展
整数进制:
- 二进制:0b10,对应对应十进制2
- 十进制:10
- 八进制:010,对应十进制8
- 十六进制:0x10,对应十进制16
多个不同整数类型的变量相加时,若其中有一个long类型,则相加结果为long;否则都为int类型。
浮点数类型扩展
浮点数float
类型占32字节,double
类型占64字节,其位数有限、是离散的、有舍入误差的,因此容易出现数值溢出的情况。两个浮点数可能很接近但不严格相等。float
和double
类型的变量相加时,结果为double
类型。
使用浮点数时应注意,银行业务中不能使用float和double类型,要使用BigDecimal类进行判断。
1 | // 理论上f和d应该相等 |
字符类型
编码类型:Unicode 2字节,范围0-65536
转义字符:
- \t 制表符
- \n 换行