使用变量创建 class 与将变量作为参数传递给方法
Creating class with variables vs passing variables as parameters into a method
就性能或其他因素而言,哪种方法更好?
假设我正在创建一个 class,其中只有一个方法接受 2 个值并将它们相加。
使用 2 个实例变量来存储 2 个值然后使用它们的方法更好,还是在调用方法时将变量作为参数传入更好?
注意:这个class只是为了使用这个方法而创建的。
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;
}
或者只使用静态方法会更好,这样我就不需要每次使用该方法都创建一个对象吗?
Which is a better way to do this, in terms of performance or other
factors?
这些方式与性能无关。这些是设计方法。
第一种形式(将参数存储为字段):
public MyClass(int value1, int value2){
this.value1 = value1;
this.value2 = value2;
}
public int myMethod(){
return value1 + value2;
}
如果您想将传递的信息保存在 class 中以便能够在需要时调用 myMethod()
是有意义的(对象的创建和计算可能有所不同时间)而且稍后在实例的另一个方法中使用 value1
和 value2
。
如果您只想计算结果,则第二种形式(仅使用参数)很有意义:
public int myMethod(int value1, int value2){
return value1 + value2;
}
根据需要使用其中一种。
在 Java 中,在 class 中的变量称为非全局成员或实例变量。
public class MyClass {
int value1;
int value2;
这两个变量需要根据您的需求来使用。首先实现make和structure,想想你想要实现什么。然后决定什么 classes 以及这些 classes(methods/ variables) 需要什么成员。
例如,当您想使用相同的值执行其他任务时,可能需要这两个 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;
}
}
但是你可以为执行任务的方法每个取两个参数 return 值,仅此而已(所有不同,没有任何相关)。
总结:
两者都有独特的功能,可以根据您的要求滚动播放。
这取决于您的意图。
如果您将 value1 和 value2 命名为 engineWeight 和 wheelWeight,那么您可以命名您的方法:
public int calculateWeightSum(){
return 值 1 + 值 2;
}
在这种情况下,采用这种方法是有意义的。
第二种方法(带有方法参数)可以用作对象的通常业务逻辑。你给变量来操作,它的结果是return。结果可能取决于您进行调用的对象。这就是您不将此方法标记为静态的原因。如果将其标记为静态,则对象状态不会影响结果。
Java 没有 "global" 变量。它有静态 public 变量,可以非常相似地对待。您可以在这两种方法中使用它们,但在这里使用它的意图非常不清楚。在这种情况下,可能更好的方法是使用静态方法来制作实用程序来完成这项工作。
至于性能,在所有情况下都几乎相同。但是,在使用构造函数的方法中,您使用额外的内存来存储每个对象的字段。但是,再一次。这在很大程度上取决于您的意图,在这里很难判断,直到您提供有关实际任务的更多信息。
现在我只是描述了我对使用不同方法的便利性的想法。
就性能或其他因素而言,哪种方法更好?
假设我正在创建一个 class,其中只有一个方法接受 2 个值并将它们相加。
使用 2 个实例变量来存储 2 个值然后使用它们的方法更好,还是在调用方法时将变量作为参数传入更好?
注意:这个class只是为了使用这个方法而创建的。
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;
}
或者只使用静态方法会更好,这样我就不需要每次使用该方法都创建一个对象吗?
Which is a better way to do this, in terms of performance or other factors?
这些方式与性能无关。这些是设计方法。
第一种形式(将参数存储为字段):
public MyClass(int value1, int value2){
this.value1 = value1;
this.value2 = value2;
}
public int myMethod(){
return value1 + value2;
}
如果您想将传递的信息保存在 class 中以便能够在需要时调用 myMethod()
是有意义的(对象的创建和计算可能有所不同时间)而且稍后在实例的另一个方法中使用 value1
和 value2
。
如果您只想计算结果,则第二种形式(仅使用参数)很有意义:
public int myMethod(int value1, int value2){
return value1 + value2;
}
根据需要使用其中一种。
在 Java 中,在 class 中的变量称为非全局成员或实例变量。
public class MyClass {
int value1;
int value2;
这两个变量需要根据您的需求来使用。首先实现make和structure,想想你想要实现什么。然后决定什么 classes 以及这些 classes(methods/ variables) 需要什么成员。
例如,当您想使用相同的值执行其他任务时,可能需要这两个 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;
}
}
但是你可以为执行任务的方法每个取两个参数 return 值,仅此而已(所有不同,没有任何相关)。
总结:
两者都有独特的功能,可以根据您的要求滚动播放。
这取决于您的意图。
如果您将 value1 和 value2 命名为 engineWeight 和 wheelWeight,那么您可以命名您的方法:
public int calculateWeightSum(){ return 值 1 + 值 2; }
在这种情况下,采用这种方法是有意义的。
第二种方法(带有方法参数)可以用作对象的通常业务逻辑。你给变量来操作,它的结果是return。结果可能取决于您进行调用的对象。这就是您不将此方法标记为静态的原因。如果将其标记为静态,则对象状态不会影响结果。
Java 没有 "global" 变量。它有静态 public 变量,可以非常相似地对待。您可以在这两种方法中使用它们,但在这里使用它的意图非常不清楚。在这种情况下,可能更好的方法是使用静态方法来制作实用程序来完成这项工作。
至于性能,在所有情况下都几乎相同。但是,在使用构造函数的方法中,您使用额外的内存来存储每个对象的字段。但是,再一次。这在很大程度上取决于您的意图,在这里很难判断,直到您提供有关实际任务的更多信息。 现在我只是描述了我对使用不同方法的便利性的想法。