Java中的Void和return - 何时使用

时间:2013-07-08 13:11:46

标签: java return void

我对虚空和回归有一些“困惑”。一般来说,我理解void在方法中使用而不返回任何东西,当我想将某些内容返回给调用代码时,返回用于方法。

但是在下面的代码中,我可以使用两者,我的问题是,使用哪一个?以及如何确定?它是关于性能的吗?

通常情况下,我在两种情况下都有相同的结果。

public class Calc {
    private double number;

    Calc (double n)
    {
        number = n;
    }

    public void add(double n)
    {
        number += n;
    }   

    public double add1(double n)
    {
        return number = number +  n;
    }
}

谢谢!

7 个答案:

答案 0 :(得分:4)

此方法:

public void add(double n)
{
   number += n;
} 

您更改了number的内部状态,但此方法的调用者不知道number的最终值。

在下面的方法中,您正在向调用者暗示number的最终值。

public double add1(double n)
{
   return number = number +  n;
}

我建议保留一个单独的getNumber() getter方法。

答案 1 :(得分:2)

你想写这个吗?

Calc c = new Calc();
double a = c.add(3);

如果是,请保留add1方法。在您的对象中使用返回值的一种更好的方法如下:

public class Calc {
  ....
  public Calc add(double d) { number += d; return this; } 
}

现在你可以写

Calc c = new Calc().add(1).add(2);

这很多次非常方便,读取得很好,并保留了垂直屏幕空间。

这个成语被称为流利的API

答案 2 :(得分:1)

在虚方法中:

public void add(double n)
{
    number += n;
} 

您无法跨方法使用n变量。这意味着您将无法将其用于Calc方法。

但是,当使用实际返回某些内容的方法时,例如:

public double add1(double n)
{
    return number = number +  n;
}

你可以将该变量用作一个对象,这样你就可以在Calc方法和其他方法中多次使用它,每次都可能是同一个对象(如果用于计算,则不建议使用不同的值)或每次都有一个新的对象。

据我所知,没有明显的表演问题。

答案 3 :(得分:0)

我个人更喜欢返回一个值。它允许您以很少或没有成本的方式向调用代码提供信息(性能通常大致相同)。它可以是计算的结果,也可以是Mark提到的允许您将语句链接在一起的对象。哪一个可能取决于您的具体应用。

答案 4 :(得分:0)

return不应与void类类型一起使用,因为默认情况下返回程序输出,并且可以通过java类的适当方法显示,例如当您想要显示程序的输出时:

System.out.println("number = " + number);

答案 5 :(得分:0)

你有这样的功能定义: -public(或私有等)-lvl访问。 -static(或空白)访问该方法而不创建该对象的实例。 -and void:你注意到任何返回内容的函数都有定义中包含的'某些'数据类型(例如:返回int值或字符串)。现在,当您的函数没有返回时,请将VOID视为数据类型(int,string等)的占位符

答案 6 :(得分:-1)

以这种方式思考: 如果您从代码中删除以下内容,您认为您的课程有用吗?

public double add1(double n)
    {
        return number = number +  n;
    }

在进行计算时,API的调用者永远不会知道计算结果:public void add(double n)