java中形参,实参改变

来源:互联网 发布:c语言九九乘法表代码 编辑:程序博客网 时间:2024/06/07 01:35

Java的形参,实参改变

 

Java中形参如果为基本类型的话,传递的是值,所以不会改变的(因为在内存中它指向的数据的地址没改变,所以不会发生改变)改变的只是形参,实参不会改变

 

//基本类型

 

 

publicclasstest3 {

    publicstaticvoidmain(String [] args)

    {

     int a = 1;

     int b = 2;

     

     change(a,b);

     System.out.println("a "+a+" b "+b );

    }

   

    

    publicstaticvoidchange(inta ,int b)

   {

      int temp = 0;

      temp = a;

      a = b;

      b = temp;

      

   }

}

 

而传递对象或者数组的时候传递的是引用,改变了内存的堆中的数据,所以形参会改变实参

//对象传递

publicclasstest3 {

    publicstaticvoidmain(String [] args)

    {

     c c = new c();

     d d = new d();

     

     change(c,d);

     System.out.println("c "+c.cc+" d "+d.dd );

    }

    

    publicstaticclassc {

      publicintcc = 1;

   }

    

    publicstaticclassd {

      publicintdd = 2;

   }

    

    publicstaticvoidchange(c c ,d d)

   {

      int temp = 0;

      temp = c.cc;

      c.cc = d.dd;

      d.dd = temp;

   }

}

 

 

//数组传递

 

publicclasstest3 {

    publicstaticvoidmain(String [] args)

    {

     int [] a =newint[10];

     int [] b =newint[10];

     a[0] = 1;

     b[0] = 2;

     

     change(a,b);

     System.out.println("a "+a[0]+" b "+b[0] );

    }

   

    

    publicstaticvoidchange(int[] a ,int[] b)

   {

      int temp = 0;

      temp = a[0];

      a[0] = b[0];

      b[0] = temp;

      

   }

}

 

0 0