如果传递参数是基本类型或其包装类,则按值传递,改变参数的值,实际参数的值不变。
public static void main(String[] args) {
Integer i = 1;
System.out.println(i); //1
changeI(i);
System.out.println(i); //1,i的值没有改变
}
public static void changeI(Integer i){
i =2 ;
}
如果传递参数是类或数组,则按引用传递,改变对象的引用,实参的引用不会改变,但是如果改变的是对象或数组中的值,则实参对象或数组中的值也会跟着改变。
public class SwapTest {
/**
* @param args
*/
public static void main(String[] args) {
C c1 = new C();
c1.setId(1);
System.out.println(c1.id); //1
changeId(c1);
System.out.println(c1.id); //2,实参的id改变了
}
public static void changeId(C c1){
c1.id = 2;
}
}
class C{
Integer id;
public C(){
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
如果两数交换,则必须使用数组操作数组中的两个值才能实现,交换两个对象也必须存放到数组中进行交换。