2017-05-13 123 views
-5

例如,我有一個班車,我有兩個對象類汽車寶馬和奔馳。因此,爲了實例化,我們必須聲明一個新的變量類似;類變量和類實例有什麼區別?

Car BMW = new Car();

現在,如果什麼對象被聲明爲

Car Benz;

如果第一個經過的參考,第二個按值傳遞,誰能幫我做的交換用一個例子實例化對象?

+0

按值傳遞和按引用傳遞是指將參數傳遞給函數/方法 - 你不提任何東西 - 請澄清你的問題。我們可能會猜想,您想要創建一個交換兩個變量的方法,但最好告訴我們您想完成什麼。另外 - Java只支持傳遞值。 – nos

+3

你必須理解**變量**和**對象**之間的區別 - 你寫的就好像這些是相同的東西。變量*指的是一個對象,它本身不是對象。 '汽車奔馳;'只是聲明一個變量而不初始化它,沒有涉及任何對象。 – Jesper

+0

@nos這很棒,但看到我做了一個實驗。在所提到的代碼中,請添加這個'System.out.println(aDog);',它實際上給出了一個十六進制數字,指的是寄存器中的地址。這意味着狗實際上指的是一個內存位置。我是一名java初學者,實際上我經歷了o'reilly編寫的java編程,其中說,默認情況下,jave將參數作爲參考傳遞。 – shiva

回答

0
public class A{ 
    int count = 1; 
} 

public class Main{ 

public static void main(String[] args) { 

    A a = new A(); 
    A b = new A(); 
    b.count = 2; 

    System.out.println("Before swap"); 

    System.out.println("A count : "+a.count); 
    System.out.println("B count : "+b.count); 

    A c = b; 
    b = a; 
    a = c; 

    System.out.println("Before swap"); 

    System.out.println("A count : "+a.count); 
    System.out.println("B count : "+b.count); 


} 

}

+0

你不明白我的意思。你可以在主函數中交換這樣的東西。但是我希望你通過調用一個函數來交換,就像一個函數'swap(a,b);'實際上應該把a和b作爲a。如果你檢查C和C++中的指針,你會得到更多的清晰度。 – shiva

+0

http://www.geeksforgeeks.org/swap-exchange-objects-java/ –

+0

@shiva爲什麼?在任何情況下,如果您修改函數的參數,調用函數將不會看到該更改;參數值是該函數的本地值。如果這些參數是引用,並且您更改了引用對象內的某些內容,則該更改將反映在調用函數中。 –

相關問題