请看下以下代码。
public class Test{
int x=4;
int m=1;
public void add(int m){
System.out.println(m);
m=m+2;
System.out.println(m);
}
public static void main(String[] args){
Test obj=new Test();
obj.add(obj.x);
System.out.println(obj.x);
}
}输出结果为
4
6
4我问一下,结果中 第一个4  怎么来的? 不明白

解决方案 »

  1.   

    obj.add(obj.x);等于调用obj.add(4)
    所以add方法中的第一个
    System.out.println(m);
    就会打印出4
      

  2.   

    对于基本类型(int boolean...)是值传递,其他对象是引用传递。
    值传递,不能改变参数值
    引用传递可以改变参数值LZ可以把int改成Integer类型再运行看看。
      

  3.   

    s所以执行add并没有增加x值,仍然是4
      

  4.   

    public class Test{                          //1
        int x=4;                                //2
        int m=1;                                //3
        public void add(int m){                 //4 --第二步m=4,带入
            System.out.println(m);              //5  --第三步 输出值 4 
            m=m+2;                              //6  --第四步 m+2 = 4+2=6
            System.out.println(m);              //7  --第五步 输出6
        }                                       //8
        public static void main(String[] args){  //9
            Test obj=new Test();                 //10
            obj.add(obj.x);                 //11--第一步 第二行中 x=4,带入obj.add(4) 
                                                             
            System.out.println(obj.x);            //12 第六步 输出x,x=4,所以输出4 
        }
    }通过以上六步,一次输出的就是 4, 6,4