public class A1 {
int a;
public A1()
{
a=10;
}
public A1(int n)
{
n=20;
System.out.println(n);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
A1 ob=new A1();
A1 ob2=new A1(20);
System.out.println(ob.a);
System.out.println(ob2.a);
}}
程序输出
20
10
0
请问为什么不是10 20 0呢,为什么20会被先输出?System.out.println(ob.a);的执行为什么反而在后面?谢谢!
int a;
public A1()
{
a=10;
}
public A1(int n)
{
n=20;
System.out.println(n);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
A1 ob=new A1();
A1 ob2=new A1(20);
System.out.println(ob.a);
System.out.println(ob2.a);
}}
程序输出
20
10
0
请问为什么不是10 20 0呢,为什么20会被先输出?System.out.println(ob.a);的执行为什么反而在后面?谢谢!
n=20;
System.out.println(n); 所以输出20
然后你自己再看一遍。
System.out.println(ob.a); //10
System.out.println(ob2.a); // 0
//这才是他们的顺序吧。
之后运行System.out.println(ob.a);输出10
然后运行System.out.println(ob2.a);输出0
System.out.println(ob.a); //输出10
System.out.println(ob2.a); //由于a为int型,默认为0,ob2对象没用调用缺省值的构造函数
//所以输出为0