1. 程式人生 > >基本型別變數和引用型別變數的實參和形參

基本型別變數和引用型別變數的實參和形參

傳參即是實參的值賦給形參。對於基本型別的形參,在方法內部對形參的修改只會侷限在方法內部,不會影響實參。

比如,給Calculator增加一個increase(int)方法:

class Calculator {
    public int add(int a, int b) {    
        return a + b;
    }

    public int increase(int a) {
        return ++a;
    }
    public static void main(String args[]) {
		Calculator calculator = new
Calculator();
int x = 10; int y = calculator.increase(x); System.out.println(x); } }

increase(int a)方法定義了一個int形參a,將x作為實參傳入,雖然方法內部做了自增操作,但是並不會改變x的值。因此,打印出來的x的值是10而不是11

引用型別的實參傳入方法中時,是將物件的引用傳入,而非物件本身。因此,在方法執行時,實參和形參會引用到同一個物件。

在方法結束時,形參佔據的記憶體雖然會被釋放,但是通過形參對物件進行的修改則不會丟失,因為物件依然儲存在堆中。

例如,Car的構造器中如果對engine

進行修改:

public Car(int color, int speed, Engine engine) {
    this.color = color;
    this.speed = speed;
    engine.power = 200; // 這裡講engine的power賦值為200
    this.engine = engine;
}

則在main方法中執行如下程式碼

Engine myEngine = new Engine(180)
Car myCar = new Car(0xffffff, 100, myEngine);
System.out.println(myEngine
.power);

Car myCar = new Car(0xffffff, 100, myEngine);這行程式碼中,我們將myEngine作為實參傳遞給了Car的構造器,由於構造器中的engine形參此時和myEngine指向同一個物件,因此執行完構造器後,myEnginepower值會從180變成200