数据类型
在 Java 中,数据类型主要分为基本数据类型和引用数据类型。理解它们的区别是编写健壮代码的基础。
基本数据类型
基本数据类型共有四类八种:整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。
| 数据类型 | 占用大小(字节) | 位数 | 取值范围 | 默认值 | 描述 |
|---|---|---|---|---|---|
| byte | 1 | 8 | -128 到 127 | 0 | 最小的整数类型,适合节省内存 |
| short | 2 | 16 | -32768 到 32767 | 0 | 较少使用,特定内存敏感场景 |
| int | 4 | 32 | -2³¹ 到 2³¹-1 | 0 | 最常用的整数类型,默认整型 |
| long | 8 | 64 | -2⁶³ 到 2⁶³-1 | 0L | 大整数,定义时需加 L 或 l |
| float | 4 | 32 | 约 ±3.4E38 | 0.0F | 单精度浮点数,定义时需加 F 或 f |
| double | 8 | 64 | 约 ±1.8E308 | 0.0D | 双精度浮点数,默认浮点类型 |
| char | 2 | 16 | '\u0000' 到 '\uffff' | '\u0000' | Unicode 字符,可存数字 |
| boolean | 无明确大小 | 无明确位数 | true 或 false | false | 逻辑判断 |
注意以下几点:
- 与 C/C++ 不同,int 始终占 4 字节,long 始终占 8 字节,不受系统位数影响。
- 整型和浮点型默认有符号。
- 整型默认是 int,浮点型默认是 double。
- char 类型使用 Unicode 编码,可以存放整型数据和中文字符。
- boolean 类型不能与 int 转换,不存在'1 表示 true'的情况。
知识点补充:int 和 long 的溢出问题。 int 最大值约为 21 亿,超过即溢出。处理大文件传输等场景建议使用 long。long 转 int 可能截断,int 转 long 则安全。
引用数据类型
引用数据类型存储的是地址,主要包括字符串、包装类和 BigDecimal。
字符串与基本类型转换
// int 转字符串
int num = 10;
String str1 = num + ""; // 拼接法
String str2 = String.valueOf(num); // 工具类法
// 字符串转 int
String str = "100";
int n = Integer.parseInt(str);
包装类
集合类要求元素必须是对象,因此引入了包装类将基本类型封装为对象。
| 基本数据类型 | 对应包装类 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
装箱与拆箱:
- 装箱:基本类型转为引用类型(如
Integer obj = i),系统自动在堆上创建对象。 - 拆箱:引用类型转回基本类型(如
int j = objInt),提取原始值。
注意:包装类可以为 null,基本类型不可以。循环中使用自动装箱/拆箱会有性能开销。
BigDecimal
浮点数计算存在精度丢失问题,涉及资金计算时推荐使用 BigDecimal。
import java.math.BigDecimal;
BigDecimal a = new BigDecimal("11.1");
BigDecimal b = new BigDecimal("0.8");
System.out.println(b.multiply(a)); // 结果:8.88
关键点:构造 BigDecimal 时必须使用字符串,否则仍会继承浮点数的精度误差。
运算符
算术运算符
包括四则运算(+ - * / %)和增量运算(+= -= *= /= %=)。自增自减(++ --)需注意前置和后置的区别。
int a = 20, b = 10;
System.out.println(a + b); // 30
System.out.println(a % b); // 0
System.out.println(a++); // 先使用后加,输出 20
System.out.println(++a); // 先加后使用,输出 22
注意:
- 整数除法结果仍为整数(舍去小数)。
- 取模运算右操作数不能为 0。
- 混合运算时结果向范围大的类型转型。
关系与逻辑运算符
关系运算符(== != < > <= >=)返回布尔值。逻辑运算符(&& || !)用于组合条件。
短路现象:&& 左侧为 false 时右侧不执行;|| 左侧为 true 时右侧不执行。利用此特性可避免空指针异常。
位运算符与移位
位运算直接操作二进制位:&(与)、|(或)、^(异或)、~(取反)。
移位运算符:<<(左移)、>>(右移)、>>>(无符号右移)。
- 左移 N 位相当于乘以 2 的 N 次方。
- 右移 N 位相当于除以 2 的 N 次方。
条件运算符
三目运算符 表达式 1 ? 表达式 2 : 表达式 3,根据条件返回不同值。
int max = a > b ? a : b;
方法
方法的定义与调用
方法是将解决特定问题的代码封装起来,便于复用。
public static boolean isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return true;
}
return false;
}
参数传递机制: Java 中基本类型参数传递是值传递,修改形参不影响实参。但引用类型(如数组)传递的是地址副本,修改对象内容会影响原对象。
public static void swap(int[] arr) {
int t = arr[0];
arr[0] = arr[1];
arr[1] = t;
}
方法重载
同一个类中,方法名相同但参数列表(个数、类型、顺序)不同,称为重载。返回值类型不作为重载依据。

掌握这些基础概念,能帮助你更清晰地理解 Java 程序的运行逻辑。

