Java中的Void和return-何时使用
我对虚空和回归有些“困惑”。一般来说,我理解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
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关键字的定义。这不是问题。我的问题是“但在下面的代码中,我可以同时使用这两种代码,我的问题是,使用哪一种?如何确定?是否与性能有关?”