在Java中,一共有8种基本类型——4种整型、2种浮点类型、1种字符类型char、1种boolean类型。

1. 整型

整型用于标识没有小数部分的数,可以是负数。Java提供了4种整型,如下:

Java 整型
类型存储需求取值范围
int4字节-2 147 483 648 ~ 2 147 483 647 (略高于20亿)
short2字节-32 768 ~ 32 767
long8字节-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
byte1字节-128 ~ 127

通常情况下,int类型最常用,但若是需要表示整个地球的居住人口,则需要使用long类型。

byte和short类型主要用于特定的应用场合,如底层文件处理货存储空间有限的大数组。

▲ 各种数据类型的取值范围

各种数据类型的取值范围是固定的,如下:

长整型数值有一个后缀 L 或1 (如4000000000L),

十六进制数值有一个前缀0x 或 0X (如0xCAFE),

八进制有一个前缀0 (如 010 对应十进制中的8),

二进制数在八进制的基础上有一个前缀0b 或 0B(如0b1001 就是9),

其中八进制表示法比较容易混淆。

另外,可以位数字字面量加下划线(如 1_000_000 (或 0b1111_0100_0010_0100_0000)表示100万),下划线只为了让人更易读。

2. 浮点类型

浮点类型表示有小数部分的数值。Java有两种浮点类型,如下:

浮点类型
类型存储需求取值范围
float4字节大约 ±3.402 823 47 x 10^386~7位有效数字)
double8字节大约 ±1.797 693 134 862 315 70 x 10^308 15位有效数字)

double表示这种类型的数值精度是float类型的两倍(即双精度数)。

float类型的数值有一个后缀 F 或 f (例如 3.14F),没有后缀F的浮点数值(如3.14)则默认为double类型,也可以在double数值后面添加后缀 D 或 d(例如,3.14D)。

▲ 遵循IEEE754规范

所有浮点数计算都遵循IEEE754规范。具体有3个特殊的浮点数值表示溢出和出错情况:

* 正无穷大

* 负无穷大

* NaN(不是一个数)

例如,一个正整数除以0的结果为正无穷大;计算0/0或者负数的平方根结果为NaN。

3. char类型

char类型原本用于表示单个字符。如今有些Unicode字符可用一个char值描述,另一些Unicode字符需要用两个char值。

char类型的字面量值要用单引号括起来,如:’A’ 是编码值为65的字符常量,与”A”不同,”A”是一个包含一个字符的字符串, “Hello”是包含5个字符的字符串。

▲ 转义序列

■ 转义序列 \u

char类型的值可以表示为十六进制值,其范围从\u0000 ~ \uFFFF。如:\u03C0表示希腊字母Π。

■ 特殊字符

表示特殊字符的转义序列,见下表:

特殊字符的转义序列
转义序列名称Unicode值转义序列名称Unicode值
\b退格\u0008\”双引号\u0022
\t制表\u0009\’单引号\u0027
\n换行\u000a\\反斜线\u005c
\r回车\u000d\s空格。在文本块中用来保留末尾空白符\u0020
\f换页\u000c\newline只在文本块中使用:连接这一行和下一行

可以加在引号的字符字面量或字符串中使用这些转义序列。如:’\u2122’或”Hello\n”。

P.S. 转义序列\u还可以在加引号字符常量或字符串之外使用(而其他转义序列不可以),如:

public static void main(String\u005B\u005D args)

4. boolean类型

boolean(布尔)类型有两个值:false 和 true,用来判定逻辑条件。

※ 整型值和布尔值之间不能进行相互转换。