2013-05-01 110 views
2

我對編程相當陌生,對於返回值的含義我很困惑。起初,我認爲它意味着輸出什麼價值被返回,但是當我在我自己的代碼中嘗試時,沒有發生任何事情。返回值是什麼意思?

class Class1 { 

    public static int x = 3; 

    public static int getX(){ 
     return x; 
    } 

    public static void main(String[] args){ 
     Class1.getX(); 
    } 
} 

這是我的意思的一個例子。當我運行程序時,什麼也沒有顯示出來。考慮到這一點,我認爲返回價值意味着別的東西。但是什麼?

回答

5

簡單來說,這意味着該值返回方法的調用者...

所以,在你的榜樣,該方法getX會的x值返回給調用者,允許他們訪問它。

class Class1{ 

    static int x = 3; 

    public static int getX(){ 
     return x; 
    } 

    public static void main(String args[]){ 
     int myX = Class1.getX(); // return the value to the caller... 
     System.out.println(myX); // print the result to the console... 
    } 
} 
+1

您還應該注意,當您返回時,它會退出該方法。 – RoccoDev 2016-06-24 16:18:12

2

返回值是方法來相互交談

public void method1() { 
    int value = 5 + method2(5); 
    System.out.println(value); 
} 

public int method2(int param) { 
    return param + 5; 
} 

這將打印15(5被髮送到method2的方式,增加了5到它並將結果返回到method1,其中添加5並打印結果)。

Java返回值的副本 - 在這種情況下,它將值10複製並返回到method1。如果method2返回Object那麼它將返回對象的引用的副本。不同的語言對於方法返回有不同的語義,所以在切換語言時要謹慎。 Java也複製傳遞給方法的參數的值 - 在這種情況下,method1複製值5並將其傳遞給method2

public void method1() { 
    int value = 5; 
    method2(value); 
} 

public void method2(int param) { 
    param = param + 5; 
} 

valuemethod1是不受method2value仍然等於5執行後method2),因爲只有一個的value副本作爲參數發送。

+0

謝謝,這很有道理。因此,如果我理解正確,方法2,其參數等於5,方法1內的聲明,將5添加到原始參數,然後用10替換原始參數? – user2338180 2013-05-09 04:49:52

+0

是的,只記得method2只能看到從method1傳入的參數的**副本**; method2中'param'的值改爲10,但method1中的'value'仍然等於5。 – 2013-05-09 04:57:55

0

你只是調用一個返回一個整數的方法,但你從不使用/打印它。嘗試在你的代碼中使用它,看看你是否已經獲得了你在課堂上設置的期望值。