2014-01-05 91 views
-5

考慮下面的代碼:'void'究竟做什麼?

float temp ; 
void setTemperature(float newTemp) 
{ 
    temp = newTemp; 
} 

在這個例子中,使用空隙方法。我的背景是C(不是先進的)。在C中,void意味着一個函數不會返回任何值(我在C中學到的最簡單的東西)。但是,在Java中,它似乎更加混亂。創建的方法是void,它使用在方法外部聲明的變量,甚至修改它。 那麼,當它是所謂的void時,該方法如何獲取修改它?

+2

這意味着* *正好相同就像它在C中所做的一樣。上次我看,C也有變量範圍。 –

+1

同一類的方法總是可以訪問類變量。 –

回答

2

void是該方法的返回類型。一個void方法可以修改該值而不返回它。

float temp ; 
/*Here you are just setting up the value 
* the method is not returning anything so 
* it should be called like this obj.setTemperature(20.0); 
*/ 
void setTemperature(float newTemp) 
{ 
    temp = newTemp; 
} 

/*Here you are retrieving the value thats why 
* While calling you should store the result 
* in a variable like this: float num= obj.getTemperature(); 
*/ 
float getTemperature() 
{ 
    return temp; 
} 
2

Void意味着它不返回任何東西。您不能在void方法中編寫return語句,這意味着您不能編寫return x;,但可以編寫return;

+2

你可以寫一個'return'語句,但表達式必須是空的。 –

+0

@SotiriosDelimanolis是true – 2014-01-05 04:59:59

+0

@SotiriosDelimanolis我已修改答案 – 2014-01-05 05:02:22

4

在您的例子:

float temp; 

void setTemperature(float newTemp) 
{ 
    temp = newTemp; 
} 

這段代碼的作用是:

  • 聲明一個變量temp

  • 聲明的方法setTemperature用關鍵字void,這說的方法將不會返回任何價值。該方法接收參數newTemp

    • 這個方法被調用時,分配newTemptemp

要回答你的問題,關鍵字void不具有訪問的變量相關,因此只是意味着函數不會返回任何值。

PS:您可能想了解有關Internet上的Java範圍。

+0

該字段不是「私人」。它具有默認訪問權限。 –

+0

愚蠢的錯誤,感謝您指出。 – Christian

1

考慮一下C程序的這個片段。原諒我,如果我做了語法錯誤 - 這是很多年以來我編程C.

typedef struct { 
    float value; 
} Temperature; 

void setTemperatureValue(Temperature *toModify, float newValue) { 
    toModify->value = newValue; 
} 

這非常像Java的,你所引用的行。它有一個功能可以完成一些功能,並且不會返回任何內容;字void用於指示函數不返回任何內容。

在Java中,我們有方法而不是函數,但含義相同。 void的意思是「這個方法沒有返回值,即使它可能做的東西到在傳遞的參數。

Java沒有什麼很類似於(void *)指針在C