0

パブリック変数が実際に何をするのか興味がありました。パッケージ内のすべてのクラスで機能すると想定していましたが、明らかにそうではありません。ADD 変数と MULT 変数を最初のクラスから 2 番目のクラスに引き継ぐ方法を知りたいです。最初のクラスでの私のコードは次のとおりです。

    public class first {
    public static int ADD = 0;
    public static int MULT = 1;
    public static int derp(int x, int x2, int a){
        int septor = 0;
        if(a == 0){
            septor = x + x2;
        }
        if(a == 1 ){
            septor = x * x2;
        }
        return septor;
    }
}

2 番目のクラス:

public class second {
    public static void main(String args[]){
        int y = first.derp(6,10,ADD);
        System.out.println(y);
    }
}
4

3 に答える 3

2

いつものように、あなたができる最善のことはdocsを参照することです:

場合によっては、すべてのオブジェクトに共通の変数が必要になることがあります。これは static 修飾子で実現されます。宣言に static 修飾子があるフィールドは、静的フィールドまたはクラス変数と呼ばれます。オブジェクトではなく、クラスに関連付けられています。クラスのすべてのインスタンスは、メモリ内の 1 つの固定位置にあるクラス変数を共有します。どのオブジェクトでもクラス変数の値を変更できますが、クラスのインスタンスを作成せずにクラス変数を操作することもできます。

クラス変数はクラス名自体によって参照されます

そこに良い例があります。それに従ってくださいfirst.ADD

また、 Java の命名規則に従い、 に置き換えfirstFirstください。

于 2013-08-03T20:35:46.473 に答える
1

次のように、他のクラスで public static フィールドを使用する必要があります。

int y = first.derp(6,10,first.ADD);
于 2013-08-03T20:30:16.823 に答える
0

次のようなものを使用して public static フィールドにアクセスできます。

Classname.variableName

あなたの場合、そうなるfirst.ADDか、インスタンス変数を使用してそれらにアクセスすることさえできます。しかし、これは一般的に悪いプログラミング手法です。このようなもの :

first obj = new first();
obj.ADD;

しかし、オブジェクト参照を使用して静的変数にアクセスすることは、プログラミングの悪い方法です。また、静的パブリック変数を final にすることで定数として作成できるかどうかを検討する必要があります。これにより、変数にアクセスする他のクラスが誤ってまたは意図的に変数を変更することがなくなります。

于 2013-08-03T20:38:24.483 に答える