this()是java中用于构造方法间调用的语法,必须位于第一行且仅一次,实现构造逻辑复用;调用链须终止于无this()和super()的构造方法;此前不可访问实例成员,与this参数传递无关。

构造方法里 this() 是在调用另一个构造方法
这里的 this() 不是把当前对象当参数传出去,而是 Java 提供的一种语法,专用于一个构造方法主动调用本类的其他构造方法。它必须写在构造方法的第一行,且只能出现一次。本质上,它是“构造逻辑复用”的机制,不是参数传递行为。
this() 调用链必须终止于无 this() 的构造方法
所有带 this() 的构造方法,最终都要落到一个不调用 this()(也不调用 super())的构造方法上,这个终点构造方法负责实际的字段初始化、校验和赋值。比如:
- 无参构造 → 调用 this("未知")
- this("未知") → 调用 this("未知", 0)
- this("未知", 0) → 直接给 name 和 age 赋值,不再调用其他构造方法
如果调用链形成循环(如 A 调 B,B 又调 A),编译器会直接报错。
不能在 this() 前访问实例成员或 this 引用
因为对象还没完成初始化,JVM 禁止在 this() 执行前读取或修改任何实例字段、调用实例方法,甚至不能写 System.out.println(this)。否则编译失败。这是为了保证构造过程的安全性和确定性。
this() 和普通参数传递完全无关
有人容易混淆 this() 和把 this 当作参数传给别的方法(比如 handler.handle(this))。二者完全不同:
- this() 是构造方法内部的语法糖,只用于构造重载;
- this 作为参数,是把当前对象引用传给外部方法,属于常规引用传递,发生在对象已创建之后。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











