1

YouTube でチュートリアルを見ていましたが、トピックはプライベート変数でした。通常、次のように Java で変数を設定します。

class hello {

    public static void main(String args[]) {
        String x;
        x = "Hello"
    }
}

しかし、そのチュートリアルでは、文字列型は次のようにメソッドから宣言されました。

class hello {

    private String x;

    public void apples() {
        x = "this is a private variable.";
        System.out.println(x);
    }
}

ご覧のとおり、それはメインのメソッドではありませんでしたが、プライベート変数は常にメソッドの外にある必要があるのか​​ 、それとも何ですか?

私は初心者なので、混乱を防ぐために知識を詰め込みたくないので、これを知っておくと本当に役に立ちます。また、コードを詰め込む人は決して良いプログラマーになれないのも事実です。

4

6 に答える 6

3

プライベート変数は常にメソッドから外れている必要がありますか?

それは正しい。メソッド内の変数はローカル変数であり、private、public、protected などのアクセス修飾子を持つことはできません。これらの修飾子は、メンバー変数、つまりクラス スコープで宣言された変数にのみ適用できます。

考えてみれば、ローカル変数は別のクラスからアクセスできないため、非常に理にかなっています。同じクラスの別のオブジェクトや、同じオブジェクト内の別のメソッドでさえありません。

関連する質問:

于 2012-07-28T06:56:32.313 に答える
0

スコープ内で作成された変数({}内で囲まれたコードブロック)は、localそのスコープの変数です。ブロックの外からはアクセスできません。

また、変数は、クラスについて話し、クラスの外部privateからアクセスできないメンバーを定義するときに浮かび上がる用語です。

于 2012-07-28T07:33:22.393 に答える
0

あなたを混乱させているのは、ローカル変数(メソッドで宣言されている)とメンバー変数(クラスのメソッドの外でクラスで宣言されている)の違いだと思います。

ローカル変数は、それが宣言されているメソッドが実行されている間だけ存在します。宣言された時点で存在し、後で次の}文字が発生したときにスコープから外れます(まだ開かれていない{文字に一致する文字を除く)。これは事実上、変数が一吹きの煙の中で消えることを意味します-スコープから外れると、変数は使用できなくなります。

ただし、メンバー変数はオブジェクト内に存在します。つまり、オブジェクトが作成されると作成され、オブジェクトが破棄されると破棄されます。したがって、通常、ローカル変数よりもはるかに長い期間存続します。メンバー変数は、それらが属するオブジェクト以外のオブジェクトによって使用される場合があります。そして、これを行うことができる場合には、非常に複雑なルールがいくつかあります。

メンバー変数のprivate修飾子は、オブジェクトが属するクラスにあるコードによってのみアクセスできることを意味します。

于 2012-07-28T07:18:10.630 に答える
0
 but i want to ask that do private variables always have to be out of method or what?.

まあ、メソッド内で変数をプライベートにするのは実際には意味がありません。メソッドで宣言された変数はスタック変数であり、プライベート 変数よりもスコープが狭いためです。それらは宣言されているメソッドでのみアクセスでき、プライベート変数は宣言されているクラス全体でスコープを持ちます。

于 2012-07-28T07:24:02.840 に答える
0

Cass 変数は、次のいずれかの型として宣言する必要があります。

公衆

保護された

公衆

最初の例では、変数は関数に対してローカルです。つまり、メソッド hello.main() に明確にバインドされています。

その場合、そのメソッド関数内でのみアクセスできます。これはクラス変数ではないため、アクセス レベルを設定する必要はありません。

2 番目の例では、変数はクラス変数です。クラス変数がある場合、それを private (そのクラスのオブジェクトからのみアクセス可能)、protected (継承されたクラスからアクセス可能)、または public (オブジェクトの外部からアクセス可能) に設定できます。クラス内で可能な多くのメソッドは、そのクラス変数にアクセスできます。

メソッド内ではなく、クラス定義内に設定された変数がある場合、それは「フィールド」または「プロパティ」または「属性」と呼ばれます。クラス内の複数のメソッドがフィールドを参照できるため、フィールドのアクセシビリティを定義する方法が必要です。

メソッド内に変数を設定すると、そのメソッド内でのみアクセスでき、外部からはアクセスできません (参照ポインターを使用するか、メソッド引数を介して渡す場合を除きます)。

于 2012-07-28T06:56:53.913 に答える
0

Javaのプライベート変数は、そのクラスだけがグローバルにアクセスできる変数です (もちろん、それを含むクラスの他のすべてのメソッドも)。

メソッド内で宣言された変数は、メソッドのスコープ内でのみアクセスできます。if ステートメント内で宣言された変数は、if ステートメント内でのみアクセスできます .... など。

パフォーマンスの問題のため、プライベート変数はできるだけ少なくするのが最善です。クラスで宣言された 100 個のプライベート変数があるとします。クラスには 10 個のメソッドが含まれており、各メソッドは 10 個の変数を使用しています。オブジェクトをインスタンス化すると、100個のプライベート変数をインスタンス化してオブジェクトが作成されます。変数をメソッドに対してローカルにすると、クラスのインスタンス化時に変数は作成されず、メソッドにアクセスするたびに 10 個の変数が使用されます....

Javaには他のタイプの変数もあります。理解を深めるために、ここから始めることができますhttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

于 2012-07-28T07:05:31.267 に答える