java的基本类型
Java 语言中一共有 8 种 基本数据类型(Primitive Types),它们可以分为四大类:整数型、浮点型、字符型和布尔型。
这些类型直接存储在栈(Stack)内存中,因此它们的存取速度非常快。
以下是这 8 种基本类型的详细介绍:
一、 8 种基本类型汇总表
| 大类 | 类型 (关键字) | 大小 (位/Bit) | 大小 (字节/Byte) | 默认值 | 取值范围 | 对应的包装类 |
|---|---|---|---|---|---|---|
| 整数型 | byte |
8 | 1 | 0 |
Byte |
|
short |
16 | 2 | 0 |
Short |
||
int |
32 | 4 | 0 |
(约21亿) | Integer |
|
long |
64 | 8 | 0L |
Long |
||
| 浮点型 | float |
32 | 4 | 0.0f |
单精度浮点数 | Float |
double |
64 | 8 | 0.0d |
双精度浮点数 | Double |
|
| 字符型 | char |
16 | 2 | '\u0000' |
0 \sim 65,535 (Unicode字符) |
Character |
| 布尔型 | boolean |
- | - | false |
true 或 false |
Boolean |
二、 详细分类解析
1. 整数型(byte, short, int, long)
用于表示没有小数部分的数值,都是有符号数(正负数)。
byte:主要用于节省内存,或者在网络传输、文件读写时传输二进制数据。short:现在极少使用。int:最常用的整数类型。Java 中整数默认就是int类型。long:用于表示大整数(如时间戳、身份证号、流水号等)。- 注意:声明
long类型时,数值后面必须加L或l(推荐大写L,因为小写l容易和数字1混淆),例如:long num = 10000000000L;。
- 注意:声明
2. 浮点型(float, double)
用于表示带小数部分的数值。
float:单精度浮点数。- 注意:声明
float类型时,数值后面必须加F或f,例如:float price = 10.5f;(如果不加,默认会被当做double处理而报错)。
- 注意:声明
double:双精度浮点数。最常用的浮点数类型。Java 中带小数的数值默认是double类型。- 警告:浮点数存在精度舍入误差,不能用于精确的计算(如货币/金融计算)。精确计算应使用
java.math.BigDecimal。
- 警告:浮点数存在精度舍入误差,不能用于精确的计算(如货币/金融计算)。精确计算应使用
3. 字符型(char)
char:用于存储单个字符。- 它使用 Unicode 编码,占用 2 个字节,因此它可以存储一个汉字。
- 书写时必须用单引号括起来,例如:
char grade = 'A';或char china = '中';。 - 它也可以与整数相互转换(对应 Unicode 编码表的值,如
'A'对应65)。
4. 布尔型(boolean)
boolean:只有两个值:true和false。- 用于逻辑判断、条件控制语句。
- 关于大小:JVM 规范并没有明确规定
boolean的实际大小,通常在编译后用int(4字节)代替,如果是boolean数组则每个元素占 1 字节。
三、 相关重要概念
1. 自动装箱与拆箱(Autoboxing and Unboxing)
Java 是一门面向对象的语言,但基本类型不是对象。为了让基本类型也能像对象一样操作,Java 为每种基本类型都提供了一个对应的包装类(如 int 对应 Integer)。
- 装箱:基本类型 包装类。例如:
Integer a = 10; - 拆箱:包装类 基本类型。例如:
int b = a;
2. 基本类型与引用类型的区别
| 特性 | 基本类型 (Primitive) | 引用类型 (Reference) |
|---|---|---|
| 存储位置 | 栈(Stack) | 引用存放在栈,实际对象存放在堆(Heap) |
| 内存占用 | 空间小,速度快 | 空间大,有垃圾回收开销 |
| 默认值 | 有默认值(如 0, false) |
默认值一律为 null |
| 使用场景 | 局部变量、高频简单计算 | 泛型(如 List<Integer>)、面向对象设计 |
右滑查看面试常问