我看到一个java面试题:
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递
答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的
那什么情况是引用传递??

解决方案 »

  1.   

    引用传递就是reference parameter.
    属于c++或c的概念,就是直接把指针作为参数,
    方法中是对指针的操作。
      

  2.   

    汗一个
    java中的对象全部都是引用传递吧,因为我们拥有的就是对象的引用啊,我们并不拥有对象本身,所以传递的时候只能传递引用。答案有错误哈
      

  3.   

    引用传递:fun(int &a,int &b)
    呵呵
      

  4.   

    By the value of referrence
      

  5.   

    public static void main(String[] args){
       Integer a=new Integer(1);
       Integer b=new Integer(2);
       swap(a,b);
       System.out.println(a);
       System.out.println(b);
    }
    public void swap(Integer a,Integer b){
        //todo
        //:)
    }
      

  6.   

    java中除基本类型外全部都是引用传递,我想楼主在这里过份的概念中打滚了,你说的值传递,无非就是复制了一个对像的引用或一个对像的指针,那按这种说话当然是值传递,但是值传递和引用传递的概念是面像对像本身的。而不是说他复制了东西就是值传递,那如果按这种说法,那在任何程序语言中都不存在引用传递了.
      

  7.   

    java里貌似都是值传递吧  据说书上是这么写的
      

  8.   

    答案是对的。
    它说是值传递的原因是:
    比如对象A作为参数传递给一个方法,那么这个方法将复制一个对象(引用)B,A和B指向同一个内存空间。
    所以,改变了B的指向的话,A的指向是不会改变的,当然A指向的内容也不会改变。
    如果改变了B指向的内容的话,A的指向也不会改变,但A指向的内容就改变了。其实说是值传递,实质上就是指向是值传递!
      

  9.   

    什么是引用 存放地址且指向对象!java,方法中如果参数不是基本类型,肯定传的是引用 这怎么是传值拉 我靠,如果是传值的话 那应该直接传递引用指向的那个对象,
    C++中把直接传递内存中的值 如果不是一个地址 称为传值
    C++中把直接传递内存中的值 如果是一个地址 指向另一个内存 称为引用
      

  10.   

    个人感觉还是引用传递,它传的只是一个地址,如果说传地址也是值传递的话,那JAVA里就没有引用了
      

  11.   

    不要挣了,答案是对的
    确切的说是“传递了一个引用”,但“该引用是通过值传递的方式传过去的”!准备接分,HOHO~
      

  12.   

    那个答案已经说的很明确了么。Java 编程语言只有值传递参数。
    参数的值就是对该对象的引用。
      

  13.   

    答案是对的!JAVA中都是值传递。JAVA中的“引用”和C++中的引用有本质的区别,倒是和C++中的指针非常类似。可以将JAVA的引用理解为“不支持指针运算的指针”。所以可以说JAVA中其实并不存在真正的引用,所谓的引用只是对象的地址(指针)罢了。把JAVA中的引用传递按照C++中的指针传递来理解是明智的,只是记住它并不支持类似C++中指针的所有功能。
      

  14.   

    请问怎么用 java 写个 交换两个整数 的方法。public void swap(Integer a,Integer b){
        // How todo? How todo?  How todo ?}
      

  15.   

    public class test
    {
    private String c = new String("good");

    public String change(test t)
    {
    t.c = "god!";
    return t.c;
    }
    public static void main(String[] args)
    {
    test te = new test();
    String change = te.change(te);
    System.out.println(change);
    System.out.println(te.c);

    }
    }//结果显示的都是“god”
      

  16.   

    java中除基本类型外全部都是引用传递!但是答案中的解释是对的,引用不会变,其实是地址。值才能变!
      

  17.   

    > 我看到一个java面试题:
    > 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,
    > 并可返回变化后的结果,那么这里到底是值传递还是引用传递
    > 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个
    > 参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以
    > 在被调用的方法中改变,但对象的引用是永远不会改变的
    > 那什么情况是引用传递??定义一个变量 MyObject obj = new MyObject(); 然后把 obj 作为参数传递给一个方法。如果在这个方法中,指定改变 obj 指向的这个对象的内容,那就是“值传递”,传过去的值就是指向这个对象的指针。如果在这个方法通过操作,使得返回后的 obj 指向另外一个对象,那就是“引用传递”,传过去的是对这个指针变量的“引用”。显然,Java 只能做到前者,所以,它是“值传递”的。
      

  18.   

    【对不起,有文字错误,重发一遍】定义一个变量 MyObject obj = new MyObject(); 然后把 obj 作为参数传递给一个方法。如果在这个方法中,只能改变 obj 指向的这个对象的内容,那就是“值传递”,传过去的值就是指向这个对象的指针。如果在这个方法中通过操作,使得返回后的 obj 指向另外一个对象,那就是“引用传递”,传过去的是对这个指针变量的“引用”。显然,Java 只能做到前者,所以,它是“值传递”的。有人说 Java 能“引用传递”,其实他说的是对那个*对象*的引用,而不是说对那个*变量*本身的引用。C/C++ 意义上的“引用传递”,说的可是对那个*变量*本身的引用。