在性能或其他因素方面,哪种方法更好?
假设我正在创建一个带有jut one方法的类,它接受2个值并将它们加在一起。
最好有2个实例变量来存储2个值,然后有一个使用这些变量的方法,或者在调用方法时将变量作为参数传递是否更好?
注意:此类只是为了使用此方法而创建的。
public class MyClass {
int value1;
int value2;
public MyClass(int value1, int value2){
this.value1 = value1;
this.value2 = value2;
}
public int MyMethod(){
return value1 + value2;
}
或者这样:
public class MyClass {
public MyClass(){
}
public int MyMethod(int value1, int value2){
return value1 + value2;
}
或者使用静态方法会更好,所以每次使用该方法时都不需要创建对象?
答案 0 :(得分:1)
在性能或其他方面,这是更好的方法 因素是什么?
这些方式与表现无关。这些是设计方式。
第一种形式(将参数存储为字段):
public MyClass(int value1, int value2){
this.value1 = value1;
this.value2 = value2;
}
public int myMethod(){
return value1 + value2;
}
如果你想在类中保存传递的信息以便能够在你想要的时候调用myMethod()
(对象的创建和计算可能在时间上有所不同),那么是有意义的稍后在实例的其他方法中使用value1
和value2
。
如果只想计算结果,第二种形式(仅使用参数)是有意义的:
public int myMethod(int value1, int value2){
return value1 + value2;
}
根据您的需要使用一个或另一个。
答案 1 :(得分:1)
在Java中,类中的变量称为成员变量或实例变量不是全局变量。
public class MyClass {
int value1;
int value2;
这两个变量需要根据您的要求使用。首先实现make和structure,想想你想要实现什么。然后确定这些类(方法/变量)需要哪些类和成员。
例如,当您想使用相同的值执行其他任务时,可能需要这两个int value1; int value2;
变量。例如divide()
,multiply()
等
public class MyClass {
int value1;
int value2;
public MyClass(int value1, int value2){
this.value1 = value1;
this.value2 = value2;
}
public int add(){
return value1 + value2;
}
public int sub(){
return value1 - value2;
}
public int divide(){
return value1 / value2;
}
public int multiply(){
return value1 * value2;
}
}
使用类似public int MyMethod(int value1, int value2){
的方法,您只能执行任务。您无法保存变量值以执行其他任务。 就像那些有助于划分任务的方法一样。
public class MyClass {
public int add(int value1, int value2){
return value1 + value2;
}
public int sub(int value1, int value2){
return value1 - value2;
}
public int divide(int value1, int value2){
return value1 / value2;
}
public int multiply(int value1, int value2){
return value1 * value2;
}
}
但是你可以为方法执行任务返回值分别采用两个参数,即所有(都是不同的,没有任何相关的东西)。
<强>要点:强>
两者都具有独特的功能,可根据您的要求进行播放。
答案 2 :(得分:1)
这取决于你的意图。
如果您将value1和value2命名为engineWeight和wheelsWeight,那么您可以命名您的方法:
public int calculateWeightSum(){ return value1 + value2; }
在这种情况下,采用这种方法是有意义的。
第二种方法(使用方法参数)可以用作对象的通常业务逻辑。你给变量操作并返回结果。结果可能取决于您进行调用的对象。这就是你不将此方法标记为静态的原因。如果将其标记为静态,则对象状态不会影响结果。
Java没有“全局”变量。它具有可以非常相似地处理的静态公共变量。您可以将它们与两种方法一起使用,但在此处使用它的目的非常不明确。在这种情况下,最好使用静态方法来实现这项工作。
就性能而言,在所有情况下几乎都是一样的。但是,在构造函数的方法中,您使用额外的内存来存储每个对象的字段。但是,再一次。这在很大程度上取决于您的意图,在您提供有关实际任务的更多信息之前,很难判断。 现在我只是描述了我对如何使用不同方法的方便的想法。