public static void f(Integer x)
{
x=x*3;
}试验结果x并没有被乘3,请问是怎么回事?不是应该自动打包拆包吗?

解决方案 »

  1.   

    public class TestInbox { public static void f(Integer x) {
    x = x * 3;
    System.out.println(x);
    }

    public static void main(String[] args) {
    Integer x = 3;
    f(x);
    }
    }因为你的f没有返回值。
      

  2.   

    ZW_Ren(任再旺)
    你这么做这个例子就没有意义了。我想问为什么不给我拆包,然后乘3,然后再打包?
      

  3.   

    Integer应该也是作为值传递的
    你说的是引用传递吧...这个不叫打包..
    你可以传一个LIST或者HASHMAP之类的"类"进去
    在方法里给列表添加数据,外部变量也会同时更改
      

  4.   

    int是值传递,Integer是引用传递
      

  5.   

    你去翻翻书
    我记得几个基本变量的类都是FINAL的
    那几个传递的时候应该是CLONE的
      

  6.   

    我觉得你的这个问题不是拆包和打包的问题。
    拆包和打包
    public  void f(Integer i){
       return i*i;
    }
    这个可以叫拆包。
    以因为你是一格对象Integer对象作参数,但是运算的时候是以int来运算的。
    所以叫拆包。
    你看一下下面的这篇文章吧,可能对你有用。
      

  7.   

    http://www.blogjava.net/AllanZ/archive/2006/07/29/60726.html
      

  8.   

    对于你的这个问题,我觉得应该是,值传递还是址传递的问题。
    在java里面,基本类型,是值传递的。对象类型,是址传递。
    一般是这样。详细的内容还要看 
    java编程思想。