楼上正确,java参数的确是值传递,包括简单类型和引用类型
1.对于简单类型是值传递这点已经没有什么可疑问的了
2.对于引用类型,有很多人认为是传递引用,这是错误的
说白了是传递引用的拷贝,而不是直接将传递引用
e.g:
class A{
int i = 0;
void toString(){
Systen.out.println("A.i = " + i);
}
}class B{public static void function(A a){
a.i++;//a.i 加1
B b = new B();//实例化B对象
a = b;//将B的引用赋给a
}public static void main(String[] args){
A a = new A();
B.function(a);
a.i++;
System.out.println(a);
}
}
//结果应该是A.i = 2

解决方案 »

  1.   

    哈哈,今天看书刚好看到这句话
    在RMI-IIOP中是对的。
      

  2.   

    胡扯拔刀写那篇文章是sb,尽管我没看java的对象类型传递的是引用(地址)
    只有原始类型传递是值传递
      

  3.   

    确实很奇怪,虽然我认为复杂对象是传递引用的,但是这个程序的结果确实不是我想的那样。public class Test {
      public Test() {
      }
      public static void main(String[] args) {
        Test test1 = new Test();
        //BrickL b = new BrickL();
        A a = new A();
        B b = new B();    a.print();    b.changeA(a);    a.print();    a = new A(10);    a.print();
      }}
    class A
    {
      public int i = 0;
      public A(int in )
      {
        i = in;
      }
      public A()
      {  }  public void print()
      {
        System.out.println("A.i = " + i);
      }
    }
    class B
    {
      public void changeA(A a)
      {
        a.i++;
        A newA = new A(10);
        a = newA;
      }
    }
      

  4.   

    to: falling_boat() 
    复杂对象还是传值的...to: redlaputa(吾心如秋思,爱随雨后归) 
    你可以想象成2个遥控器同时控制同1台电视机
    ^_^
      

  5.   

    有点明白
    Object o1=new Object();
    Object o2=null;o2=o1;o2.change();o2=new Object();
    o1还是原先的那个