Java-在简单示例中返回vs void
以下两个例子的区别是什么?哪一个是正确的? 在第一个示例中,我使用return打印一些结果,在另一个示例中,我修改变量Java-在简单示例中返回vs void,java,return-type,Java,Return Type,以下两个例子的区别是什么?哪一个是正确的? 在第一个示例中,我使用return打印一些结果,在另一个示例中,我修改变量sum,然后我尝试在main方法中打印它 class A { double RR(double a, double b) { double sum = 0; sum = (a + b) / 2.0; return sum; } } public static void main(String[] args) {
sum
,然后我尝试在main方法中打印它
class A {
double RR(double a, double b) {
double sum = 0;
sum = (a + b) / 2.0;
return sum;
}
}
public static void main(String[] args) {
System.out.println(new A().RR(5.5, 6.5));
}
或
这里没有“对”或“错”:您可以根据情况使用两种方法:
- 第一种方法是无状态的,这是一个巨大的优势,特别是当涉及并发时。您可以在不同的上下文中从多个线程调用
,始终得到正确的结果。事实上,您可以使RR
方法RR
static
- 第二种方法保持一个状态——它是
变量。这意味着,如果您调用sum
,然后在获取结果之前再次调用它,则可能会得到错误的数据。另一方面,上一次操作的结果会为您存储,以备您多次需要。这可能需要,也可能不需要RR
A a = new A();
a.RR(5.5, 6.5);
System.out.println(a.sum);
在其他条件相同的情况下,人们应该更喜欢无状态方法(即解决方案1),因为API更易于使用。第一个示例在循环中创建一个变量(
sum
),并返回它。(方法之外不存在sum
变量。)第二个示例在a
类中有一个sum
变量,并在void
方法中对其进行修改。(将在特定的A
对象中修改sum
变量)您可以执行以下操作:
double sum = 0;
void RR(double a, double b) {
sum = (a + b) / 2.0;
}
public static void main(String[] args) {
A myObject = new A();
myObject.RR(5.5, 6.5);
System.out.println(myObject.sum);
}
您是否尝试过编译这两种格式?在第二种情况下,您无法打印
void
(即结果不存在)<代码>A=新A();a、 RR(5.5,6.5);系统输出打印项次(总金额)代码>在询问之前,至少应该测试代码。没有对错之分,但如果只是进行计算,则无需将结果保存为实例字段,然后将其打印出来。该方法可以是静态的,并返回结果。
double sum = 0;
void RR(double a, double b) {
sum = (a + b) / 2.0;
}
public static void main(String[] args) {
A myObject = new A();
myObject.RR(5.5, 6.5);
System.out.println(myObject.sum);
}