Java是一种强类型语言。每个变量都必须要有一种数据类型。Java一共有八种基本的数据类型。其中有4种整型,2中浮点型,一种用于表示Unicode编码的字符单元的字符类型char类型,和一种用于表示真值的boolean类型。(注意:String不是基本数据类型

1. 整型

整型用于表示没有小数部分的数值,它允许是负数。类型如下:

类型 字节大小 取值范围
byte 1字节 -128 ~ 127
short 2字节 -32 768 ~ 32 767(3万左右)
int 4字节 -2 147 483 648 ~ 2 147 483 647(20亿左右)
long 8字节 -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807

此外,可以用不同的前后缀来表示不同的进制:

  • 0x 前缀表示十六进制数值
  • 0 前缀表示八进制数值
  • 0b 前缀表示二进制数值

在书写较大的数字时,可以用_来分割,例如 0b000_111_010_100 表示468,Java编译器回去除这些下划线。

注意:在c和c++中,int 和 long 常因处理器位数不同而占用不同的字节数。但是在Java中所有的数据类型所占的字节数量与平台无关。另外,Java中没有任何无符号类型(unsigned)。

2. 浮点类型

浮点类型用于表示有小数部分的数值,类型如下:

类型 字节数 取值范围
float 4 [-3.40282346638528860e+38 , -1.40129846432481707e-45] ∪ [1.40129846432481707e-45 ~ 3.40282346638528860e+38]
double 8 [-1.79769313486231570e+308,-4.94065645841246544e-324] ∪ [4.94065645841246544e-324,1.79769313486231570e+308]

后缀F表示float类型,后缀D表示double类型,当没有后缀时,默认为double类型。

注意:浮点数值不适用于禁止出现舍入误差的计算中。例如:System.out.println(2.0 - 1.1); 将打印出0.8999999999999999而不是0.9。主要原因是浮点数在系统中采用二进制表示,而在二进制中无法精确地表示 1/10,就像十进制中无法精确地表示 1/3 一样。

3. char类型

char类型用于表示单个字符。

Unicode编码单元可以表示为十六进制数值。范围为 \u0000 到 \uffff 。例如 \u03C0 表示圆周率 Π。

4. boolean类型

boolean类型有两个值:true false。整型和布尔类型之间不能相互转换。

注意:在c和c++中,数值和指针可以替代boolean值,0相当于false,非0值相当于true。但是在Java中不能这样。