int val = i.intValue ( );值的传递
public static void add3 (Integer i)引用的形式传递的值

解决方案 »

  1.   

    add3(i);
    是值调用,并不会改变i得值
      

  2.   

    这里参数传递的实际上是地址(一个指向对象的句柄),在方法add3里面只是给i赋了一个新的对象的地址而已,原有的对象并不受影响。
      

  3.   

    public class Test1 {
     public static void add3 (Integer i){
     int val = i.intValue ( );
     val += 3;
     i = new Integer (val); //这个i只是参数的一个拷贝而已(即:是main函数里的i的一个拷贝,它和main函数里的i指向同一个对象),这里只是重新把i指向一个对象,并不影响main函数里的i
     System.out.println ("method"+i.intValue ( ) );
    }