数据类型简单来说就是一个放东西的箱子。数据类型分为基本数据类型与引用数据类型。
1.基本数据类型基本数据类型有8个:byte, short, int, long, float, double, char, boolean。
整数型:byte, short, int, long这些都是存整数的。
| 数据类型 | 范围 | 大小 | 包装类 | 默认值 |
| byte | [-128,127] | 1字节 | Byte | 0 |
| short | [-32768,32767] | 2字节 | Short | 0 |
| int | [-2147483648,2147483647] | 4字节 | Integer | 0 |
| long | [-9223372036854775888, 9223372036854775887] | 8字节 | Long | 0L |
示例1:
byte b = 88; long l = 9999999999999L; long l2 = 9999999999999;
请注意,示例1第3行是错误的!
因为你写下一个常数,编译器会默认是int类型。可是第3行的数值已经超出int类型的最大值,所以是无法编译通过的。正确的写法是第2行那样,再数值末尾添上L(或l,但是这样容易与数字1混淆)。
上面这段代码看起来很正常,但是10行却出现了问题。
因为l2的类型比i2更“大”,有可能发生数值的溢出,比如:
l3的值明显大于int类型的最大值,这样一定会发生数值溢出。
但是如果想让一个long值强行转为int,怎么办?我们可以这么做:
在类型较“大”的值前面加一个小括号,括号里写上你想转换成的类型。这种方式我们称为“强制转型”。
强制转型也有风险。
上图,我们发现i3的值是负数!因为int类型无法存储比最大值还要大的值,就溢出了。
可是为什么long类型的l3值也是负数呢?因为13行等号右边进行运算的时候已经溢出了,解决方式是:
现在就正常了。
总结一下,进行强制转型时一定要注意数值的溢出。
整型数字进行除法运算时会自动将结果向下取整。如果除数是0,就会出现异常(不是编译出错)。
浮点数型:float, double| 数据类型 | 范围 | 大小 | 包装类 | 默认值 |
| float | [1.4E-45, 3.4028235E38] | 4字节 | Float | 0.0F |
| double | [4.9E-324, 1.7976931348623157E308] | 8字节 | Double | 0.0 |
浮点数就是小数。
一个浮点数默认是当作double类型来处理的。如果想要使用float的浮点数,需要在数后面添上F(或f)。
一个正浮点数除以0的结果是正无穷,一个负浮点数除以0得到的结果是负无穷,0.0除以0的结果是NaN(Not a number,不是一个数字)。NaN不等于它本身。
前文提到,整型除法结果自动向下取整。那如果不想向下取整呢?
将其中一个数转成浮点数就行了。
上面的图片也可以看出,浮点数也存在强制转型。
另外,浮点数有很大的问题,一些数据最好不要使用浮点数进行存储。
字符型:char每个字符都只包含一个“字”。
布尔型:booleanboolean占1字节,只支持true或false值。



