Java一共有8种基本类型,4种整型、2种浮点类型、1种标识Unicode编码的单元字符类型char、1种用于表示真值的Boolean类型。Java是一种强类型的语言,所以必须为每一个变量声明一种类型。
1、整型
类型 |
存储大小 |
取值范围 |
int |
4字节 |
-2147483648 ~ 2147483647 |
short |
2字节 |
-32768 ~ 32768 |
long |
8字节 |
-9223372036854775808 ~ 9223372036854775807 |
byte |
1字节 |
-128 ~ 127 |
备注:
(1) Java中,整型的范围与运行Java代码的机器无关,从一个平台移植到另一个平台,或者一个平台不同操作系统之间进行移植不会给程序带来问题。
(2) 长整型long数值后面有一个后缀L,例如400L
(3) 十六进制数值有一个前缀0x,例如0xCF00;八进制有一个前缀0,例如010表示对应八进制的8,因为8进制容易混淆,建议不用八进制常数。
(4) Java7以后,0b前缀表示二进制,比如0b1001就是9。
1 package day01; 2 3 public class Test02 { 4 public static void main(String[] args) { 5 System.out.println(0b1001); 6 } 7 }
执行结果:
2、浮点
浮点类型用来表示有小数部分的数值,主要有两种,如下图所示:
类型 |
存储大小 |
取值范围 |
float |
4字节 |
-3.40282347E+38F ~ 3.40282347E+38F(有效位数为6-7位) |
double |
8字节 |
-1.79769313486231570E+308 ~ 1.79769313486231570E+308 |
备注:
(1) Double的数值精度是float的2倍,绝大数使用double,很少使用float。比如需要快速处理单精度数据。
(2) Float类型的数值后面有一个F后缀,例如3.14F。如果没有后缀默认为double,double后面可以加后缀D表示区分,例如3.3D
(3) 所有的浮点数值都遵循IEEE754规范,表示溢出和出错情况的三个特殊浮点数值:正无穷大、负无穷大、NaN(不是一个数字)。例如一个正整数除以0的结果为正无穷大,计算0/0或者负数的平方根结果为NaN。
3、Char类型
(1) 表示单个字符。通过表示字符常量,例如‘A’表示编码65对应的字符常量,“A”是一个包含字符A的字符串。
(2) 要弄明白char类型,需要知道Unicode编码,Unicode编码的目的是解决两个问题:一个是对于任意给定的代码值,不同编码方案下可能有对应不同字母;第二个问题是采用大字符集的语言其编码长度可能有不同。
(3) Unicode的字符包括汉语、日语、韩语、英文常见字母符号等,但是由于实际发展情况,目前16位的char类型已经满足不了描述所有的Unicode字符需要。因此,不建议使用char类型,除非需要对UTF-16代码单元进行操作,最好将处理的字符串用抽象数据类型表示。
4、Boolean类型
Boolean类型有2个值:false和true,用来进行逻辑判断,整型和布尔值之间不能进行相互转换。