这应该就是你说的第一种情况:能正常输出
- class Demo {
- Demo(){
- this(8);
- System.out.println("这是无参构造");
- }
- Demo(int num){
- this("s");
- System.out.println("这是int类型构造");
- }
- Demo(String str){
- System.out.println("这是String类型构造");
- }
- }
- class Test {
- public static void main(String[] args){
- new Demo();
- }
- }
复制代码
而这是第二种情况:
- class Demo {
- Demo(){
- this("s");
- System.out.println("这是无参构造");
- }
- Demo(int num){
- this();
- System.out.println("这是int类型构造");
- }
- Demo(String str){
- System.out.println("这是String类型构造");
- }
- }
- class Test {
- public static void main(String[] args){
- new Demo();
- }
- }
复制代码
因为创建对象使用的是无参构造,进入无参构造后,先执行String构造,再回到自身执行无参构造的语句。
int构造就没有执行到。
如果你要全部都执行一次,可以再创建对象时,穿入一个int类型参数,使用new Demo(8); |