以下两个示例有什么区别?哪一个是正确的?
在第一个示例中,我使用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) {
System.out.println(new A().RR(5.5, 6.5));
}
OR
class A {
double sum = 0;
void RR(double a, double b) {
sum = (a + b) / 2.0;
}
}
public static void main(String[] args) {
System.out.println(new A().RR(5.5, 6.5));
//OR System.out.println(sum);
}
答案 0 :(得分:1)
这里没有“对”或“错”:您可以根据情况使用两种方法:
RR
,始终获得正确的结果。实际上,您可以使用RR
方法static
。sum
变量。这意味着,如果您调用RR
,然后在获取其结果之前再次调用它,则可能会得到错误的数据。另一方面,如果您多次需要,上次操作的结果将为您存储。可能需要也可能不需要。请注意,第二种方法需要更改:
A a = new A();
a.RR(5.5, 6.5);
System.out.println(a.sum);
在其他条件相同的情况下,应该首选无状态方法(即解决方案1),因为该API更易于使用。
答案 1 :(得分:1)
第一个示例在循环内部创建一个变量(sum
)并将其返回。 (sum
变量不会在方法之外。)第二个示例在sum
类中具有一个A
变量,并在void
方法中对其进行了修改。 (sum
变量将在特定的A
对象中进行修改)您可以按照以下步骤进行操作:
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);
}