- 基本数据类型
类型名称 | 关键字 | 占用内存 | 取值范围 |
---|---|---|---|
字节型 | byte | 1 字节 | -128~127 |
短整型 | short | 2 字节 | -32768~32767 |
整型 | int | 4 字节 | -2147483648~2147483647 |
长整型 | long | 8 字节 | -9223372036854775808L~9223372036854775807L |
单精度浮点型 | float | 4 字节 | +/-3.4E+38F(6~7 个有效位) |
双精度浮点型 | double | 8 字节 | +/-1.8E+308 (15 个有效位) |
字符型 | char | 2 字节 | ISO 单一字符集 |
布尔型 | boolean | 1 字节 | true 或 false |
-
数据类型的转换
数据类型的转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种.2.1 隐式转换(自动类型转换)
转换规则如下:
数值型数据的转换:byte→short→int→long→float→double。
字符型转换为整型:char→int。2.2 显式转换(强制类型转换)
(type)variableName
问题
-
short s1 = 1; s1 = s1 + 1;有错吗?
short s1 = 1;
s1 = s1 + 1; // 会报错. 由于1是整型, s1 + 1也是整型, 需要强制类型转换才能赋值给s1.
s1 += 1; //正确.相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换. -
float f=3.4; 有错吗?
有错. 3.4是double类型, 赋值给float类型会丢失精度.
需要做强制类型转换. float f = (float)3.4 -
Integer
Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;
System.out.println(f1 == f2); // true
System.out.println(f3 == f4); // false