Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Void和return-何时使用_Java_Return_Void - Fatal编程技术网

Java中的Void和return-何时使用

Java中的Void和return-何时使用,java,return,void,Java,Return,Void,我对虚空和回归有些“困惑”。一般来说,我理解void在方法中使用,而不返回任何内容,当我想向调用代码返回某些内容时,return在方法中使用 但是在下面的代码中,我可以同时使用这两种代码,我的问题是,使用哪一种?如何确定?这是关于性能的吗? 通常,我在这两种情况下都有相同的结果 public class Calc { private double number; Calc (double n) { number = n; } publi

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

但是在下面的代码中,我可以同时使用这两种代码,我的问题是,使用哪一种?如何确定?这是关于性能的吗?

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

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;
    }
}
谢谢大家!

此方法:

public void add(double n)
{
   number += n;
} 
您更改了
number
的内部状态,但此方法的调用方不知道
number
的最终值

public double add1(double n)
{
   return number = number +  n;
}
在下面的方法中,您将通知调用方
number
的最终值

public double add1(double n)
{
   return number = number +  n;
}
我建议保留一个单独的
getNumber()
getter方法。

此方法:

public void add(double n)
{
   number += n;
} 
您更改了
number
的内部状态,但此方法的调用方不知道
number
的最终值

public double add1(double n)
{
   return number = number +  n;
}
在下面的方法中,您将通知调用方
number
的最终值

public double add1(double n)
{
   return number = number +  n;
}
我建议保留一个单独的
getNumber()
getter方法。

这样考虑: 如果您从代码中删除以下内容,您认为您的类是否有任何用处:

public double add1(double n)
    {
        return number = number +  n;
    }
当您进行计算时,但API的调用者永远不知道计算结果:
public void add(double n)

这样考虑: 如果您从代码中删除以下内容,您认为您的类是否有任何用处:

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

当您进行计算时,但API的调用方永远不知道计算结果:
public void add(double n)

您想写这个吗

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);
这是很多次非常方便,阅读良好,并节省垂直屏幕空间


这个习惯用法被称为fluent API。

你想写这个吗

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);
这是很多次非常方便,阅读良好,并节省垂直屏幕空间

这种习惯用法称为fluent API。

在void方法中:

public void add(double n)
{
    number += n;
} 
您无法跨方法使用
n
变量。这意味着您将无法将其用于
Calc
方法

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

public double add1(double n)
{
    return number = number +  n;
}
您可以将该变量用作对象,从而允许您在
Calc
方法和其他方法中使用该变量,每次都可能是同一个对象(如果使用不同的值进行计算,则不建议使用该变量)或每次都是一个新对象

据我所知,没有明显的性能问题

在void方法中:

public void add(double n)
{
    number += n;
} 
您无法跨方法使用
n
变量。这意味着您将无法将其用于
Calc
方法

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

public double add1(double n)
{
    return number = number +  n;
}
您可以将该变量用作对象,从而允许您在
Calc
方法和其他方法中使用该变量,每次都可能是同一个对象(如果使用不同的值进行计算,则不建议使用该变量)或每次都是一个新对象


据我所知,没有明显的性能问题

我个人更喜欢返回一个值。它允许您向调用代码提供信息,几乎不需要任何成本(无论哪种方式,性能通常都差不多)。它可以是计算的结果,也可以像Mark提到的那样,是允许您将语句链接在一起的对象。哪一个可能取决于您的特定应用程序

我个人更喜欢返回一个值。它允许您向调用代码提供信息,几乎不需要任何成本(无论哪种方式,性能通常都差不多)。它可以是计算的结果,也可以像Mark提到的那样,是允许您将语句链接在一起的对象。哪一个可能取决于您的特定应用程序

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


System.out.println(“number=“+number”)

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


System.out.println(“number=“+number”)

您有如下函数定义: -公共(或私人等)-lvl访问。 -静态(或空白)访问该方法,而不创建该对象的实例。
-和void:您已经注意到,任何返回某物的函数都具有包含在定义中的“某物”数据类型(例如:返回int值或字符串)。现在,当您的函数没有返回时,请将VOID看作数据类型(int、string等)的占位符。

您有如下函数定义: -公共(或私人等)-lvl访问。 -静态(或空白)访问该方法,而不创建该对象的实例。
-和void:您已经注意到,任何返回某物的函数都具有包含在定义中的“某物”数据类型(例如:返回int值或字符串)。现在,当函数没有返回时,请将VOID看作数据类型(int、string等)的占位符。

谢谢。但我知道void和return关键字的定义。这不是问题。我的问题是“但在下面的代码中,我可以同时使用这两种代码,我的问题是,使用哪一种?如何确定?是否与性能有关?”