使用变量创建类与将变量作为参数传递到方法中

时间:2017-06-05 12:01:28

标签: java class parameters instance-variables

在性能或其他因素方面,哪种方法更好?

假设我正在创建一个带有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;
}

或者使用静态方法会更好,所以每次使用该方法时都不需要创建对象?

3 个答案:

答案 0 :(得分:1)

  

在性能或其他方面,这是更好的方法   因素是什么?

这些方式与表现无关。这些是设计方式。

第一种形式(将参数存储为字段):

public MyClass(int value1, int value2){
    this.value1 = value1;
    this.value2 = value2;
}

public int myMethod(){
    return value1 + value2;
}
如果你想在类中保存传递的信息以便能够在你想要的时候调用myMethod()(对象的创建和计算可能在时间上有所不同),那么

是有意义的稍后在实例的其他方法中使用value1value2

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

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;
    }
}

但是你可以为方法执行任务返回值分别采用两个参数,即所有(都是不同的,没有任何相关的东西)。

<强>要点:

两者都具有独特的功能,可根据您的要求进行播放。

清洁代码是一本好书。并阅读这些javanoteq1q2

答案 2 :(得分:1)

这取决于你的意图。

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

    public int calculateWeightSum(){     return value1 + value2; }

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

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

    2. Java没有“全局”变量。它具有可以非常相似地处理的静态公共变量。您可以将它们与两种方法一起使用,但在此处使用它的目的非常不明确。在这种情况下,最好使用静态方法来实现这项工作。

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