使用变量创建 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() 是有意义的(对象的创建和计算可能有所不同时间)而且稍后在实例的另一个方法中使用 value1value2

如果您只想计算结果,则第二种形式(仅使用参数)很有意义:

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 值,仅此而已(所有不同,没有任何相关)。

总结:

两者都有独特的功能,可以根据您的要求滚动播放。

干净的代码 是一本值得阅读的好书。并阅读这些 javanote, q1 and q2

这取决于您的意图。

  1. 如果您将 value1 和 value2 命名为 engineWeight 和 wheelWeight,那么您可以命名您的方法:

    public int calculateWeightSum(){ return 值 1 + 值 2; }

在这种情况下,采用这种方法是有意义的。

  1. 第二种方法(带有方法参数)可以用作对象的通常业务逻辑。你给变量来操作,它的结果是return。结果可能取决于您进行调用的对象。这就是您不将此方法标记为静态的原因。如果将其标记为静态,则对象状态不会影响结果。

  2. Java 没有 "global" 变量。它有静态 public 变量,可以非常相似地对待。您可以在这两种方法中使用它们,但在这里使用它的意图非常不清楚。在这种情况下,可能更好的方法是使用静态方法来制作实用程序来完成这项工作。

至于性能,在所有情况下都几乎相同。但是,在使用构造函数的方法中,您使用额外的内存来存储每个对象的字段。但是,再一次。这在很大程度上取决于您的意图,在这里很难判断,直到您提供有关实际任务的更多信息。 现在我只是描述了我对使用不同方法的便利性的想法。