在Java中,一共有8种基本类型——4种整型、2种浮点类型、1种字符类型char、1种boolean类型。
1. 整型
整型用于标识没有小数部分的数,可以是负数。Java提供了4种整型,如下:
Java 整型 | ||
类型 | 存储需求 | 取值范围 |
int | 4字节 | -2 147 483 648 ~ 2 147 483 647 (略高于20亿) |
short | 2字节 | -32 768 ~ 32 767 |
long | 8字节 | -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 |
byte | 1字节 | -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有两种浮点类型,如下:
浮点类型 | ||
类型 | 存储需求 | 取值范围 |
float | 4字节 | 大约 ±3.402 823 47 x 10^38(6~7位有效数字) |
double | 8字节 | 大约 ±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,用来判定逻辑条件。
※ 整型值和布尔值之间不能进行相互转换。