答えて
静的変数には、任意の場所からアクセスできます。 非静的変数は、非静的メソッドまたは特定のオブジェクト(クラスのインスタンス)からのみアクセスできます。このため
理由は非常に複雑な、しかし、簡単に取得することができます:オブジェクトは、そのクラスからインスタンス化されるたびに、あなたのクラスの非静的が複製されている
何かを。静的なものは、クラスのすべてのインスタンスに共通であり(新しいオブジェクトに対しては複製されません)、個々のオブジェクトの状態の変更による影響を受けません。
明らかに、クラスのインスタンスが作成されるまで、静的でないものは存在しません - それに属するオブジェクトはありません。静的メンバーはクラスのインスタンスを存在させる必要はないので、オブジェクトのインスタンスを必要とする(静的でない)メンバーにアクセスすることはできません。
ありがとう、これは素敵な答え – VisaMasterCard
問題ない、それを理解する最良の方法は、実際にそれについて再生し、それを見ることです。 – richzilla
私は非静的Methodeの内部の静的変数を使用することが可能であるかどうかを知りたいですか?
はい。
静的メソッド内で非静的変数を使用できますか?
号
静的メソッド内で静的でない変数を使用できないのはなぜですか? – VisaMasterCard
@ヴィサ:それは意味をなさないので。静的メソッドは特定のインスタンスに関連付けられていませんが、静的でない変数は関連付けられています。 –
インスタンスでインスタンスを修飾することができます: 'someInstance.myInstanceVar'。暗黙的に、静的コンテキストでは意味を持たない 'this'を使用します。 –
私は非静的Methodeの内部の静的変数を使用することが可能であるかどうかを知りたいですか?
はい。
静的メソッド内で非静的変数を使用できますか?
静的メソッド内で使用できるクラスのインスタンスがある場合のみ。
静的コンテキストで非静的変数を使用することについて、どういうことを考えてください。静的メソッドはどのインスタンスでも実行されていないため、クラスに定義されているメンバーフィールドで操作することはどういう意味ですか?そのフィールドはどのインスタンスに属していますか?なし!
逆のシナリオは、非静的コンテキストで静的変数を使用することは完全に意味があります。インスタンス上にあり、指定されたクラスのすべてのインスタンスに対して定義されている静的な参照を読み取る必要があります。
どちらも可能ですが、インスタンス(静的でない)変数にアクセスするにはインスタンスが必要です。
これは、インスタンスメソッドのように非静的コンテキストで暗黙的に指定することができ、静的コンテキストで明示的に指定する必要があります。
class StaticOrNot {
static int staticVar = 1;
int instVar = 2;
static void staticMethod() {
staticVar += 1;
StaticOrNot someInstance = new StaticOrNot();
someInstance.instVar += 2;
}
void nonStatic() {
staticVar += 1;
instVar += 2; // using this as instance
}
}
someInstanceはどういう意味ですか? – VisaMasterCard
@ VisaMasterCard - 変数にアクセスしたいクラスのインスタンス(オブジェクト)です。例えばローカル変数。 –
- 1. Javaで静的に使用
- 2. Java APK非静的使用
- 3. Javaで静的変数を使用
- 4. Javaの静的メソッドで非静的変数を使用できますか?
- 5. ソフトウェアコンポーネント用の静的Javaオブジェクトの使用
- 6. 非静的メソッドでjavaのexecutorサービスを使用する
- 7. Javaで静的関数を使用するインスタンス変数
- 8. Spring DIで使用するJavaの静的最終選択肢
- 9. Javaシングルトンは静的変数を使用すべきですか?
- 10. Javaの非静的クラスで静的変数を宣言する
- 11. Javaの静的汎用フィールド
- 12. Java - 汎用静的メソッド
- 13. Log4j2を静的メソッドで使用する
- 14. 静的メソッドをELで使用する
- 15. サーブレットで静的クラスを使用する
- 16. 静的イベントでWeakEventManagerを使用する
- 17. パラレル実行に非静的WebDriverを使用する - Selenium - TestNG - Java
- 18. ANTLRをJavaソースファイルの静的解析に使用する
- 19. Javaを使用したJavaアプレットの非静的メソッドへのアクセス
- 20. 静的メソッドを使用する静的メソッドまたは非静的メソッド
- 21. リフレクションを使用してJavaで静的プライベートハッシュマップを取得
- 22. 静的バインディングを使用するタイミングとJavaで動的バインディングを使用するタイミング
- 23. Java(Android)の静的クラス - 使用または使用しない
- 24. Java静的メタプログラミング
- 25. Java静的インポート
- 26. Javaで静的初期化ブロックを使用するのはなぜですか?
- 27. 静的メソッドと静的変数のjava
- 28. 使用静的ブロックエラー
- 29. Akka静的使用
- 30. Java - 静的メソッドのインスタンスクラスを使用していますか?
http://stackoverflow.com/questions/2079830/how-do-i-create-a-static-local-variable-in-javaを参照してください。 – Feanor
非静的メソッドと静的メソッドの違いは、「this」がゼロパラメータとして送信されたことだけです。だから非静的メソッドは常に効果的に1つの余分なパラメータを持っています(これはJavaソースでは決して表示されませんが、 'this'を使うことができます)。静的には特別なパラメータはありません。サイドノート:内部クラスは、外側(または内側)クラスの参照を受け入れる* static *合成メソッドを使用して、外部クラス(およびその逆)のプライベートフィールドにアクセスします。 – bestsss