public class TestA {
int a, b, c;
public static void main(String[] args) {
TestA p =new TestA(1, 2);//P在这里被构造成P(1,2)
TestA p1 = new TestA(3, 4, 5);
p.m(p);//调用方法m时,输出1,2,0  ,想知道C和C的值怎样凭空出来的?
p.m(p1);
}
TestA(int _a, int _b) {
a = _a;
b = _b;
}
TestA(int _a, int _b, int _c) {
a = _a;
b = _b;
c = _c;
}
 void m(TestA p) {
System.out.println(p.a + "," + p.b + "," + p.c);//
}
}

解决方案 »

  1.   

    因为你的m()方法需要打印p.c。但是你第一个构造方法并没有初始化c,所以c就是默认的值。int型默认的值是0。
      

  2.   

    回楼上的:
    我调用方法m()时,输入的实参是P,但P是用第一个构造方法的,只有a和b啊,哪来的C ??????
      

  3.   

    TestA p =new TestA(1, 2); 创建实例p的时候会初始化TestA类中的所有全局变量。a和b通过构造方法赋值了,c虽然没有赋值但是它有默认值:0
      

  4.   

    TestA p =new TestA(1, 2);//P在这里被构造成P(1,2)
    再想了一下,P在这一步应该被构成了P (1, 2, 0)了, 结贴再给1楼分。