2014-01-05 58 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