?? methodspecial.java
字號:
public class MethodSpecial
{
public static void main(String [] args)
{
IntClass A=new IntClass(2);
IntClass B=new IntClass(4);
swap(A,B);
System.out.println("A="+A.getNum());
System.out.println("B="+B.getNum());
}
static void swap(IntClass i,IntClass j)
{
int k;
k=i.getNum();
i.setNum(j.getNum());
j.setNum(k);
}
}
class IntClass
{
public int x;
public IntClass(int t) {x=t;}
public int getNum() {return x;}
public void setNum(int t) {x=t;}
}
/*
錯誤版本
public class MethodSpecial
{
public static void main(String [] args)
{
Integer A=new Integer(2);
Integer B=new Integer(4);
swap(A,B);
System.out.println("A="+A);
System.out.println("B="+B);
}
static void swap(Integer i,Integer j)
{
Integer k;
k=i; i=j; j=k;
}
}
我的理解是:
方法調用時,程序首先為形參分配一個空間,再把實參復制到形參中,形參和實參位于兩個不同的內存空間,方法過程結束后,i的值并沒有回傳給A,所以A的值不變
而C++中,形參如果是指針,形參和實參指向同一個內存空間,所以i的值就是A的值
區別在于引用。在 C++ 中當傳遞給函數的參數是引用時,您傳遞的就是這個引用,或者內存地址(按引用傳遞)。在 Java 應用程序中,當對象引用是傳遞給方法的一個參數時,您傳遞的是該引用的一個副本(按值傳遞),而不是引用本身。
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -