public class Text {
  int m = 1;
  int n = 2;
  public void m1 (int i) {
 
    m=i;
        
  }
  public static void main (String [] args) {
    Text t = new Text();
    t.m1(2);  
    System.out.println(t.m);
  }
}
本人菜鸟,写一个这么个程序,主要是想验证值传递和引用传递的区别.听说值传递是改变不了成员变量的值(乱说的啊,不知道是不是成员变量值.肯定有个是改变不了的),可我这编译完怎么m的值变了呢.不是只有当型参是引用传递的时候才会改变么.现在验证不明白了.请高手帮忙调试下.改动下.

解决方案 »

  1.   

    public class Test {
    public static void main(String[] args) throws ParseException {
    int i = 5 ;
    System.out.println(i) ;
    m(i) ;
    }

    public static void m(int i){
    i = 3 ;
    System.out.println(i) ;
    }
    }
      

  2.   

    基本类型变量,包括char、byte、short、int、long、float、double、boolean。
    引用类型变量,包括类、接口、数组(基本类型数组和对象数组)。你的m是在整个类中的,肯定会改变值的,如果你把m当作一个函数的参数传递给那个参数,那么你输出定义的m的话,它的值是不会改变的
      

  3.   

    public class Test {
    public static void main(String[] args) throws ParseException {
    A a = new A() ;
    a.i = 5 ;
    System.out.println(a.i) ;
    m(a) ;
    System.out.println(a.i) ;
    }

    public static void m(A a){
    a.i = 3 ;
    System.out.println(a.i) ;
    }
    }
    class A{
    int i ;
    }
      

  4.   

    java里说是没有引用传递,都称为值传递
    但这个值是有区别的
    当参数是一个对象的时候,这个值是该对象在堆中的地址值
    你可以理解为C中的指针
      

  5.   

    晕 ,你先明白传递改变值的含义,m是接受传值的成员变量,是你传送值的参数,不变不正常了public class Text {
      int m = 1;
      int n = 2;
      public void m1 (int m) {
      //m=i;   这里已经改变成员变量的值了
      m=10;
        
      }
      public static void main (String [] args) {
      Text t = new Text();
      t.m1(t.m);   //这里把m值的传给函数
      System.out.println(t.m);
      }
    }
      

  6.   

    谁能把值传弟和引用传递的含 义说说啊,我书上没有.郁闷了.我是在家学习呢啊.外面报的班还没开课,我是在网上看马士兵老师讲的视频.偶然想起JAVA与C之间这两种区别.然后自己打了如上代码试了下不对.可能还真没明白含义,哪位高手帮忙讲讲.
      

  7.   

    http://fishhappy365.javaeye.com/blog/624937