java 基本数据结构

Java 的基本数据类型有 8 种,包括 6 种数字类型、1 种字符类型和 1 种布尔类型。

基本数据类型总览

数字类型包括 4 种整数类型和 2 种浮点数类型,4 种整数类型是 byteshort、int 和 long,2 种浮点数类型是 floatdouble

字符类型是 char,用于表示单个字符。Java 使用统一码对字符进行编码。

布尔类型是 boolean,包括 true 和 false 两种取值。

基本数据类型 存储大小 取值范围 默认值
byte  8 位有符号数 -27到27−1  0
short 16 位有符号数 -215到215-1 0
int 32 位有符号数 -231到231-1 0
long 64 位有符号数 -263到263-1 0L
float 32 位,符合 IEEE 754 标准 负数 -3.402823e+38 到 -1.401298e-45,正数 1.401298e-45 到 3.402823e+38 0.0f
double 64 位,符合 IEEE 754 标准 负数 -1.797693e+308 到 -4.9000000e-324,正数 4.9000000e-324 到 1.797693e+308  0.0d
char 16 位  0 到 216-1 '\u0000'
boolean 1 位 true 和 false false

数字类型直接量

直接量是在程序中直接出现的常量值。

将整数类型的直接量赋值给整数类型的变量时,只要直接量没有超出变量的取值范围,即可直接赋值,如果直接量超出了变量的取值范围,则会导致编译错误。

整数类型的直接量默认是 int 类型,如果直接量超出了 int 类型的取值范围,则必须在其后面加上字母 L 或 l,将直接量显性声明为 long 类型,否则会导致编译错误。

浮点类型的直接量默认是 double 类型,如果要将直接量表示成 float 类型,则必须在其后面加上字母 F 或 f。将 double 类型的直接量赋值给 float 类型的变量是不允许的,会导致编译错误。

基本数据类型之间的转换

有时需要把不同类型的值混合运算,因此需要对数据类型进行转换。

java数字类型转换

不同的数字类型对应不同的范围,按照范围从小到大的顺序依次是:byte、short、int、long、float、double。

将小范围类型的变量转换为大范围类型称为拓宽类型,不需要显性声明类型转换。将大范围类型的变量转换为小范围类型称为缩窄类型,必须显性声明类型转换,否则会导致编译错误。

java字符类型与数字类型之间的转换

字符类型与数字类型之间可以进行转换。

将数字类型转换成字符类型时,只使用整数的低 16 位(浮点数类型将整数部分转换成字符类型)。

将字符类型转换成数字类型时,字符的统一码转换成指定的数值类型。如果字符的统一码超出了转换成的数值类型的取值范围,则必须显性声明类型转换。

java布尔类型不能与其他基本数据类型进行转换

布尔类型不能转换成其他基本数据类型,其他基本数据类型也不能转换成布尔类型。

习题
多选题
以下写法中,会导致编译错误的是?

A byte b = 30;

B byte b = 500;

C long l = 2343223;

D float f = 3.14;

答案 正确,正确答案是 B D
解析

B 选项中,500 超出了 byte 类型的取值范围,因此会导致编译错误。

D 选项中,3.14 是 double 型直接量,不能赋值给 float 类型的变量。单选题
以下写法中,会导致编译错误的是?

A byte b = 'b';

B byte b = (byte)'b';

C short s = '\u8000';

D short s = (short)'\u8000';

正确答案是 C

解析

将字符类型转换成数字类型时,字符的统一码转换成指定的数值类型,此时需要判断字符的统一码是否超出转换成的数值类型的取值范围。

C 选项的字符直接量超出了 short 的取值范围且没有显性声明类型转换,因此会导致编译错误。

3. 哪一种基本数据类型不能和其他基本数据类型进行类型转换?

布尔类型 boolean 不能转换成其他基本数据类型,其他基本数据类型也不能转换成布尔类型 boolean。