【Java】数据类型,运算符和方法重点总结

以下是 Java数据类型、运算符方法 的重点总结(以 2026 年视角,基于 Java 21/22/23 LTS 及主流面试/实际开发需求)。内容覆盖核心概念、易错点、面试高频考点和 JDK 最新特性影响。

1. 数据类型(Data Types)

Java 是 强类型语言,所有变量在使用前必须声明类型。

1.1 基本数据类型(Primitive Types) — 8 种

类型字节数位数默认值取值范围包装类面试常考点
byte180-128 ~ 127Byte网络传输、文件读写常用最小单位
short2160-32,768 ~ 32,767Short很少单独使用,常出现在数组/集合中
int4320-2³¹ ~ 2³¹-1Integer默认整数类型,常用
long8640L-2⁶³ ~ 2⁶³-1Long时间戳、大整数必须用 long + L 后缀
float4320.0f±3.4E38(约6-7位有效数字)Float科学计算,注意精度丢失
double8640.0±1.8E308(约15位有效数字)Double默认浮点类型,常用
char216Unicode 0 ~ 65535(” ~ ‘\uFFFF’)CharacterUnicode 字符,注意 ‘\uXXXX’ 表示法
boolean~1bitfalsetrue / falseBoolean不能用 0/1 代替(不像 C/C++)

高频面试点

  • boolean 占用内存:理论上 1 bit,实际 JVM 实现可能是 1 byte(数组中可能是 bit-packed)
  • char 是 无符号 16 位整数,可存储 Unicode 字符
  • 整数默认 int,浮点默认 double
  • 字面量:long 要加 L/l,float 要加 F/f

1.2 引用数据类型(Reference Types)

  • 类(class)、接口(interface)、数组(array)、枚举(enum)、记录(record,Java 16+)、注解(@interface)
  • 默认值:null
  • 存储的是 引用(地址),不是实际对象

1.3 自动装箱/拆箱(Autoboxing & Unboxing) — 面试必考

Integer i = 100;          // 自动装箱  int → Integer
int j = i;                // 自动拆箱   Integer → int

// 经典陷阱
Integer a = 100;
Integer b = 100;
System.out.println(a == b);     // true   (-128~127 缓存)

Integer c = 200;
Integer d = 200;
System.out.println(c == d);     // false  超出缓存范围,新对象

Integer 缓存范围:-128 ~ 127(可通过 -XX:AutoBoxCacheMax 修改,但不推荐)

2. 运算符(Operators)

2.1 分类一览表

优先级类别运算符结合性说明与陷阱
1后缀/创建/访问expr++, expr–, new, (), ., []从左到右new 优先级很高
2前缀/一元++expr, –expr, +,-, !, ~, (type)从右到左注意 ! 与 ~ 的区别
3乘除取模*, /, %从左到右整数除法直接截断,向零取整
4加减+, –从左到右+ 字符串拼接优先级高于算术
5移位<<, >>, >>>从左到右>>> 无符号右移(正数无影响,负数变正)
6关系<, <=, >, >=, instanceof从左到右instanceof 优先级低于比较
7相等==, !=从左到右对象比较地址,基本类型比较值
8按位与&从左到右
9按位异或^从左到右
10按位或|从左到右
11逻辑与&&从左到右短路
12逻辑或||从左到右短路
13条件? :从右到左三元运算符
14赋值及复合赋值=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=从右到左复合赋值有隐式强制转换

2.2 高频易错点

  1. && vs &|| vs |
  • && / || 是短路逻辑运算符,左边为 false/true 就不计算右边
  • & / | 是按位/逻辑运算符,两边都会计算(可能导致 NullPointerException)
  1. 整数除法:5 / 2 = 2(向零取整)
  2. 复合赋值隐式转换(经典面试题)
short s = 1;
s += 1;       // 合法!相当于 s = (short)(s + 1)
s = s + 1;    // 编译错误!int 不能直接赋给 short
  1. 字符串 +:只要有一边是 String,就进行拼接(优先级高于算术)
System.out.println(1 + 2 + "3");     // "33"
System.out.println("1" + 2 + 3);     // "123"
  1. 移位运算:常用于位运算优化、权限标志、哈希计算

3. 方法(Method)

3.1 方法签名(Signature)

[修饰符] 返回类型 方法名(参数列表) [throws 异常列表]

3.2 方法分类

类别特点示例
普通实例方法属于对象,需通过实例调用public void eat()
static 方法属于类,可通过类名调用,无 thispublic static int max(int a, int b)
final 方法不能被子类重写
abstract 方法抽象类/接口中声明,无实现abstract void run();
default 方法Java 8+ 接口默认方法,有默认实现default void sort()
synchronized 方法线程同步(锁对象或类)public synchronized void inc()

3.3 方法重载(Overload) — 编译期多态

  • 方法名相同,参数列表不同(个数、类型、顺序)
  • 与返回值类型、访问修饰符、异常无关

3.4 可变参数(Varargs) — Java 5+

public void printAll(String... args) {
    for (String s : args) System.out.println(s);
}
printAll("a", "b", "c");      // 合法
printAll();                   // 合法,args.length == 0

注意:可变参数只能出现在参数列表最后,且一个方法只能有一个可变参数。

3.5 方法参数传递机制

  • 基本类型:值传递(拷贝值)
  • 引用类型:引用传递(拷贝引用地址)
    → 方法内修改对象属性 → 生效
    → 方法内让参数指向新对象 → 不影响外部

经典面试题:

void change(String str, int[] arr) {
    str = "world";          // 不影响外部
    arr[0] = 999;           // 影响外部
}

4. 2025–2026 最新特性影响(Java 21/22/23)

  • String Templates(Java 21 预览 → 22 预览 → 23 撤回)
  • 曾计划用 STR."Hello \{name}" 替代字符串拼接,目前暂未正式落地
  • 未命名变量和模式(Java 22+):用 _ 忽略未使用变量/参数
  • 隐式声明的类与实例 main 方法(Java 21+ 预览):简化入门
// Java 22+ 预览写法(需启用预览)
void main() {
    System.out.println("Hello");
}

总结一句话口诀(面试背诵用)

八基四引,装箱拆箱陷阱多;运算优先级记清楚,短路逻辑别算错;方法签名重载别混淆,参数传递值引用要分清。”

如果需要针对某个部分(如位运算实战、方法重载 vs 重写对比、面试真题解析)继续深入,欢迎继续问!

文章已创建 4206

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部