Java中的数据类型可以分为基本数据类型和引用数据类型两种。
引用数据类型: 类,String,数组,抽象类,接口,枚举。
在这里小九主要总结一下其中的八大基本数据类型。
以 整型类型int为例:
一个整型数据会占用4个字节,并且因为java中的数据都是有符号数据,所以除去符号位之外,能够表示数据大小的有 4 * 8 - 1 = 31位二进制数据,因此整型数据可以表示的范围是:(-2^31--------
2^31 -1)
类型名称 | 数据类型 | 字节数 | 表示范围 | 包装类 |
---|---|---|---|---|
字节类型 | byte | 1 | -128~~127 | Byte |
短整型 | short | 2 | -32767~32768 | Short |
字符类型 | char | 2 | 0-65535 | Character |
整型 | int | 4 | -2^31 ~~ 2^31-1 | Integer |
长整型 | long | 8 | -2^63 ~~ 2^63-1 | Long |
单精度浮点类型 | float | 4 | Float | |
双精度浮点类型 | double | 8 | Double | |
布尔型 | boolean | 没有固定的字节数 | false、true | Boolean |
除此之外我们需要注意的有以下几点:
- byte和short类型运算时会发生整型提升。对CPU来说,读取数据是按照每次四个字节的方式从内存中进行读写,所以为了硬件上的方便,小于4个字节的类型在运算时会先将其提升为int型,这种情况叫做整型提升。
public class TestDemo{
public static void main(String[] args){
byte a = 10;
byte b = 20;
byte c = a +b;
}
}
在这个代码中,byte c = a + b;行在编码过程中会出现标红报错,我们可以看到这里的等号右边b+c的结果应该是一个int类型的数值,而解决该问题的方式有两种:①将变量d声明为int类型;②对b+c进行强制类型转换。
2. 在Java中,不允许将一个double类型的值直接赋值给float,否则编译器会直接报错。类似1.2这种小数,在Java中默认是double类型,因此定义float类型只能使用:float a = 1.2f或者float a = 1.2F。
3. 在Java中,布尔类型没有明确的大小,并且没有所谓的0为真,非0 为假的概念,所以在进行while循环是,不能直接使用while(1)方式。