Java的形参,实参改变
Java中形参如果为基本类型的话,传递的是值,所以不会改变的(因为在内存中它指向的数据的地址没改变,所以不会发生改变)改变的只是形参,实参不会改变
//基本类型
public classtest3 {
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;
}
}
而传递对象或者数组的时候传递的是引用,改变了内存的堆中的数据,所以形参会改变实参
//对象传递
public classtest3 {
publicstaticvoidmain(String [] args)
{
c c = new c();
d d = new d();
change(c,d);
System.out.println("c "+c.cc+" d "+d.dd );
}
publicstaticclassc {
public intcc = 1;
}
publicstaticclassd {
public intdd = 2;
}
publicstaticvoidchange(c c ,d d)
{
int temp = 0;
temp = c.cc;
c.cc = d.dd;
d.dd = temp;
}
}
//数组传递
public classtest3 {
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;
}
}