this() 用于在构造方法中调用本类的其他构造方法,必须作为目标构造方法的第一条语句执行。通过传入不同的参数列表,可以实现代码复用并简化初始化逻辑。

this() 调用时有哪些限制条件
使用 this() 时,它必须是构造方法体中的第一条可执行语句,且不能与 super() 同时出现。如果构造方法中没有显式调用 this() 或 super(),编译器会自动插入无参的 super() 调用。

public class User {
private String name;
private int age;
public User() {
this("Unknown", 0);
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
}
如何避免 this() 导致的递归调用
如果在两个构造方法之间互相调用 this(),会导致无限递归并最终引发栈溢出错误。确保调用链最终收敛到一个没有调用 this() 的基础构造方法上。

public class Point {
private int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public Point() {
this(0, 0); // 正确:调用另一个构造方法
}
// 错误示例:
// public Point(int x) {
// this(); // 如果 Point() 内部又调用了 this(x),则形成死循环
// }
基于程序中某个输入、条件或结果的具体问题
当调用 this() 时,实际执行的是被调用构造方法的完整初始化逻辑。这意味着所有在该构造方法中定义的字段赋值和逻辑都会按顺序执行,而不仅仅是部分初始化。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











