一、数据类型
1.1 两种数据类型
在 Java 中,数据类型主要分为
基本数据类型和引用数据类型。
1.1.1 基本数据类型
基本数据类型共有四类八种:
整型:byte, short, int, long; 浮点型:float, double; 字符型:char; 布尔型:boolean
八种基本数据类型的位数、取值范围和默认值如下表:
| 数据类型 | 占用大小(字节) | 位数 | 取值范围 | 默认值 | 描述 |
|---|---|---|---|---|---|
| byte | 1 | 8 | -128(-2⁷)到 127(2⁷-1) | 0 | 最小的整数类型,适合用于节省内存的场景 |
| short | 2 | 16 | -32768(-2¹⁵)到 32767(2¹⁵-1) | 0 | 较少使用,通常用于需要节省内存且数据范围在该区间的场景 |
| int | 4 | 32 | -2147483648(-2³¹)到 2147483647(2³¹-1) | 0 | 最常用的整数类型,可以满足大多数日常编程中整数计算的需求,是 Java 中表示整数的默认类型 |
| long | 8 | 64 | -9223372036854775808(-2⁶³)到 9223372036854775807(2⁶³-1) | 0L | 用于表示非常大的整数,当 int 类型无法满足需求时使用,定义时需要在数值后加上 L 或 l |
| float | 4 | 32 | 1.4E-45 到 3.4028235E38 | 0.0F | 单精度浮点数,用于表示小数,精度相对较低,定义时需要在数值后加上 F 或 f |
| double | 8 | 64 | 4.9E-324 到 1.7976931348623157E308 | 0.0D | 双精度浮点数,精度比 float 高,是 Java 中表示小数的默认类型 |
| char | 2 | 16 | '\u0000'(0)到 '\uffff'(65535) | '\u0000' | 用于表示单个字符,采用 Unicode 编码,可表示各种语言的字符 |
| boolean | 无明确字节大小 | 无明确位数 | true 或 false | false | 用于逻辑判断,只有两个取值,常用于条件判断和循环控制等逻辑场景 |
需要注意以下几点:
- 与 C/C++ 不同,无论在 16 位系统还是在 32 位系统,int 类型都占用 4 字节,long 类型都占用 8 字节。
- 整型数据和浮点型数据都是默认有符号的。
- 整型数据默认是 int,浮点型数据默认是 double。
- 定义 float 类型变量时,赋值的数字后加上 f,否则将被认为 double。
- char 类型变量使用 Unicode 表示字符,可以存放整型数据和中文字符。
- boolean 类型变量不可以和 int 类型相转换,不存在'1 表示 true,0 表示 false'。
面试题 1:int 和 long 是多少位、多少字节的?int 类型是 32 位、占 4 个字节,是一种有符号的整数类型,其取值范围是:-2³¹到 2³¹-1。若在一个简单的计数器程序中使用 int 类型来存储计数值,可以表示的最大值是 2,147,483,647,超过这个值就会发生溢出,导致结果不符合预期。long 类型是 64 位、占 8 字节,也是一种有符号的整数类型,其取值范围比 int 类型大,为:-2⁶³到 2⁶³-1。在处理较大的整数数值时,若 int 类型不够用,就可以使用 long 类型。如在一个文件传输程序中,文件的大小可能会很大,此时使用 int 类型很有可能溢出导致数据异常,使用 long 类型就可以解决。


