oop为什么要在java中使用此输出
我有以下java代码段
class A{
int a=100;
A(){
//Compiler inserts "a=100;"
System.out.println("A() : "+a);
}
A(int i){
//Compiler inserts "a=100;"
System.out.println("A(int) : "+a);
a=i;
}
}
class Demo{
public static void main(String args[]){
A a1=new A();
System.out.println("a1.a : "+a1.a); //100
A a2=new A(200);
System.out.println("a2.a : "+a2.a); //200
}
}
我有以下输出与此代码
A<> :100
a1.a :100
A<> :100 //why this print after a1.a :100
a1.a :200
我有以下问题。为什么这是a1.a :100
之前的A<> :100
打印
# 1 楼答案
假设你的例子和你的帖子一样,输出是
这是因为A中的构造函数首先打印出A,然后将A的值更改为i:
如果你想有这样的输出
您必须将代码更改为:
这是因为Java首先根据其定义构造对象变量,然后运行构造函数的代码