class Person{
private int age;void shot()
{
System.out.println("age="+age);
}void t(Person p)
{
p.age=50;//我 这里 可以这样赋值吗?但是输出的结果都是0 , 0;有 点不解!?
System.out.println("新age="+age);}}public class T{
public static void main(String []args){
Person p1=new Person();
p1.t(new Person());
//p1.age=20;
p1.shot();
}
}

解决方案 »

  1.   

    p1.t(new Person())??????
    改为p1.t(p1)就OK了!
      

  2.   

    问题实质:Java传值方式——值传递
      

  3.   

    p1.t(new Person());
    是给new Person()对象中的age赋值。
    p1.t(p1)才是给p1对象中的age赋值。
      

  4.   

    1楼正解,将p1.t(new Person())改为p1.t(p1)就行了
      

  5.   

    Person p1=new Person();
    p1.t(new Person());
    其实并没有给p1赋值,另外建议楼主方法名取一些有意义的名字。
      

  6.   

    p1.t(new Person());传的是一个匿名对象,不是Person p1=new Person();所创建的
      

  7.   

    。。匿名类怎么赋值?并且赋值后还输出本类的age值当然不会改变