“无效”究竟做了什么?

时间:2014-01-05 04:56:17

标签: java

请考虑以下代码:

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

在此示例中,使用void方法。我的背景是C(虽然不高级)。在C中,void表示函数不返回任何值(我在C中学到的最简单的东西)。但是,在Java中,它看起来有点混乱。创建的方法是void,它使用在方法外声明的变量,甚至修改它。 那么,当它被称为void时,该方法如何获得修改它?

4 个答案:

答案 0 :(得分:4)

在你的例子中:

float temp;

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

此代码的作用是:

  • 声明变量temp

  • 使用关键字setTemperature声明方法void,这表示该方法不会返回任何值。此方法正在接收参数newTemp

    • 此方法在调用时会将newTemp分配给temp

要回答您的问题,关键字void与访问变量无关,只是意味着该函数不会返回任何值。

PS:您可能想要了解互联网上的Java范围。

答案 1 :(得分:2)

虚空意味着它不会返回任何东西。您无法在return方法中编写void个语句,这意味着您无法编写return x;,但您可以编写return;

答案 2 :(得分: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;
}

答案 3 :(得分:1)

考虑一下C程序的这个片段。如果我犯了语法错误,请原谅我 - 自从我编写C以来已经很多年了。

typedef struct {
   float value;
} Temperature;

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

这非常类似于您引用的Java系列。它有一个功能,可以做一些事情,什么也不返回;单词void用于表示函数不返回任何内容。

在Java中,我们有方法而不是函数,但含义是相同的。 void表示“此方法不返回任何内容,即使它可能会对传入的参数执行操作。

Java与C中的(void *)指针没有任何相似之处。