Java语言提供了八种基本类型:六种数字类型(四个整数型,两个浮点型),一种字符类型和一种布尔型。其含义、占用位数和取值范围如表1。
基本类型 | 含义 | 占用位数 | 可取值范围 | 默认值 |
byte | 字节型 | 8bit | [-128,127] | 0 |
short | 短整型数据 | 16bit | [-65526,65525] | 0 |
int | 整型数据 | 32bit | [-2147483648,2147483647] | 0 |
long | 长整型数据 | 64bit | [-9223372036854775808,9223372036854775807] | 0 |
float | 单精度浮点数 | 32bit | | 0.0f |
double | 双精度浮点数 | 64bit | | 0.0d |
char | 16 位 Unicode 字符 | 16bit | [0,65525] | 0 |
boolean | 布尔型 | 未明确 | true;false | false |
表1 java中的基本类型
注意点:
(1)4种整型数据基本类型(byte、short、int、long)均为有符号、二进制补码表示的整数,因此假设其位数为nbit,则表示范围为[-2^n,2^n-1];
(2)char型表示的整数范围是怎么得到的?-->因为16位Unicode字符的编码范围是0000-FFFF(16进制),所以char可表示的整数范围就是[0,FFFF],即[0,2^16-1]。但是,需要强调一点:直接打印一个char型变量时,打印结果是该char型变量代表的Unicode字符。
(3)浮点数不能用来精确地表示某个具体的值(比如价格)
(4)当我们在一个java类中定义了一个基本类型的数据成员且没有初始化时,java编译器将按照表1中各个基本类型的默认值为它进行初始化;但是,如果我们在方法中定义了一个未初始化的基本类型的局部变量i,在使用该变量i时java编译器会报错:Variable i might not have been initialized.
基本类型的更多说明,可参考:http://www.runoob.com/java/java-basic-datatypes.html
关于boolean占用位数,可参考:https://www.jianshu.com/p/2f663dc820d0