怎样区分引用传递和值传递?它们各有什么特点?它们分别存放在什么地方?

解决方案 »

  1.   

    http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html
    看sun的java教程怎么说。
      

  2.   

    引用传递就是传递引用类型,基本上是针对类的。值传递就是传递基本类型。
    引用传递会改变对象内部的值,也就是说如果你在被调用的函数内改变了这个引用所指向的对象的某个属性的值,在这个函数外面使用该对象得到的是改变之后的值。
    而值传递,由于基本类型作用域的关系,如果你在被调用的函数内改变了它的值,改变的值只在被调用的函数内有效,在函数外得到的仍然是改变之前的值。class A
    {
      public int i = 1;
    }
    public class B
    {
      int plus(int i)
      {
        return ++i;
      }
      public static void main(String[] args(
      {
        int i = 1;
        A a = new A();
        B b = new B();
        System.out.println(b.plus(i));
        System.out.println(b.plus(A.i));
      }
    }
    得到的结果是:
    1
    2
      

  3.   

       System.out.println(b.plus(A.i));
    这句错了
       System.out.println(b.plus(a.i));
      

  4.   

    想问一下String呢,它是一个对象,他在传值时传的是引用还是值了?
    package javaapplication2;public class NewClass4 {
    public NewClass4(String s){
    s="cdf";
    }
    public static void main(String args[]){
    String s="agc";
    new NewClass4(s);
    System.out.println(s);
    }
    }
    这时输出的是agc,为什么?
      

  5.   

    http://www.blogjava.net/cheneyfree/archive/2007/05/24/119615.html
      

  6.   

    String类型是一个final类型,赋值后就不能改变其值了。他也是值传递
      

  7.   

      四楼,因为
                public NewClass4(String s){ 
                    s="cdf"; 
               }
    这里的String s 是一个局部变量,只是在这一个方法中有效,如果在这里就输出的话,那这时的s就等于cdf
     
    public static void main(String args[]){ 
         String s="agc"; 
         new NewClass4(s); 
         System.out.println(s); 
    }
    这里的s等于agc是定义好了在这个方法中的用的,虽然调用了NewClass4(s)方法,s在这个方法中改变了值但这只是在这个方法中,出了这个方法那这个值就没的什么做用了,这就是值传递,只传递值,不管这个值在别的方法的调用时有什么改变都不影响它的本身,