国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java 參數是如何傳遞的

2019-11-18 14:39:08
字體:
來源:轉載
供稿:網友

總的來說,計算機語言給子程序傳遞參數的方法有兩種。第一種方法是按值傳遞(call-by-value )。這種方法將一個參數值(value )復制成為子程序的正式參數。這樣,對子程序的參數的改變不影響調用它的參數。第二種傳遞參數的方法是引用調用(call-by-reference )。在這種方法中,參數的引用(而不是參數值)被傳遞給子程序參數。在子程序中,該引用用來訪問調用中指定的實際參數。這樣,對子程序參數的改變將會影響調用子程序的參數。你將看到,根據傳遞的對象不同,java 將使用這兩種不同的方法。

在Java 中,當你給方法傳遞一個簡單類型時,它是按值傳遞的。因此,接收參數的子程序參數的改變不會影響到該方法之外。例如,看下面的程序:

// Simple types are passed by value.
class Test {

void meth(int i,int j) { i *= 2;j /= 2;

}
}
class CallByValue {

public static void main(String args[]) {
Test ob = new Test();

int a = 15,b = 20;

System.out.PRintln("a and b before call: " +
a + " " + b);

ob.meth(a,b);

System.out.println("a and b after call: " +
a + " " + b);
}
}

該程序的輸出如下所示:

a and b before call: 15 20
a and b after call: 15 20

可以看出,在meth( ) 內部發生的操作不影響調用中a和b的值。它們的值沒在本例中沒有變為30和10。

當你給方法傳遞一個對象時,這種情形就會發生戲劇性的變化,因為對象是通過引用傳遞的。記住,當你創建一個類類型的變量時,你僅僅創建了一個類的引用。因此,當你將這個引用傳遞給一個方法時,接收它的參數將會指向該參數指向的同一個對象。這有力地證實了對象是通過引用調用傳遞給方法的。該方法中對象的改變確實影響了作為參數的對象。例如,考慮下面的程序:
// Objects are passed by reference.

class Test { int a,b;

Test(int i,int j) {a = i;b = j;

}
// pass an object
void meth(Test o) {

o.a *= 2;

o.b /= 2;

}
}

class CallByRef {public static void main(String args[]) { Test ob = new Test(15,20);

System.out.println("ob.a and ob.b before call: " +
ob.a + " " + ob.b);



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵定县| 车致| 德令哈市| 阜南县| 南康市| 云浮市| 上饶市| 茌平县| 洛扎县| 商丘市| 遂川县| 磴口县| 崇州市| 诸城市| 镇安县| 涞水县| 怀安县| 惠州市| 贵港市| 襄汾县| 凯里市| 枣庄市| 临桂县| 江油市| 营山县| 阿克陶县| 漳州市| 芜湖县| 奉新县| 兰西县| 留坝县| 那曲县| 灌阳县| 沭阳县| 巫溪县| 连平县| 紫金县| 若羌县| 棋牌| 广元市| 汉中市|