刚学JAVA~问个问题:
参数传递和变量作用域相关的~~  
我怎么看起来输出应该是4都都是1呢~答案为0,1,0,1
代码如下~~  public class ParamTester
{
   public int memberVariable=0;
   public static void main(String args[])  {
    int param1=0;
    ParamTester param2=new ParamTester();
    ParamTester param3=new ParamTester();
    int[] param4={0};
    changeParameter(param1,param2,param3,param4);
    System.out.println("param1=" +param1);
    System.out.println("param2.memberVariable=" +param2.memberVariable);
    System.out.println("param3.memberVariable=" +param3.memberVariable);
    System.out.println("param4[0]=" +param4[0]);
  }   public static void changeParameter(int param1,ParamTester        param2,ParamTester param3,int[] param4)
  {
    param1=0;
    param2.memberVariable=1;
    param3=new ParamTester();
    param3.memberVariable=1;
    param4[0]=1;
  }}不知道怎么用分~~  -_-

解决方案 »

  1.   

    changeParameter(param1,param2,param3,param4); 
    方法执行到 
    param3=new ParamTester();
    param3.memberVariable=1;
    是 为什么等于0呢
      

  2.   

    结果就应该是0 1 0 1param3是引用,它也是按值传递进方法体的,你在方法内把param3指向了另一个对象,而方法外的param3并未改变。
      

  3.   

    新new了一个,用this.param3.memberVariable=1;
      

  4.   

    param3已经不是原来那个实例了 方法执行完新实例就被抛弃了