タグ付けされた質問 「static」

静的とは、特定のオブジェクトインスタンスにバインドされていない関数またはデータストレージ領域(フィールド)を定義するために一部のプログラミング言語で使用される用語です。ほとんどの場合、このタグを使用する場合は、特定のプログラミング言語タグと組み合わせて使用​​する必要があります。


10
静的メソッドとインスタンスメソッドの違い
教科書に書かれている文章を読んでいたところ、何を言っているのかよくわかりません。基本的に、静的メソッドまたはクラスメソッドには「modifier」キーワードstaticが含まれていると言っています。しかし、それが何を意味するのか本当にわかりませんか? 誰かが静的メソッドまたはクラスメソッドとは何かを本当に簡単な言葉で説明してもらえますか? また、インスタンスメソッドとは何かについて簡単に説明してもらえますか? これは彼らが教科書で私に与えたものです: 静的修飾子の有無には、重要な実際的な影響があります。パブリッククラスメソッドは、Javaがそれが属するクラスの定義を処理するとすぐに呼び出され、実行される場合があります。これは、インスタンスメソッドには当てはまりません。パブリックインスタンスメソッドを呼び出して実行する前に、インスタンスが属するクラスのインスタンスを作成する必要があります。パブリッククラスメソッドを使用するには、クラスが必要です。一方、パブリックインスタンスメソッドを使用する前に、クラスのインスタンスが必要です。 別のメソッドの定義内で静的メソッドが呼び出される方法は、2つのメソッドが同じクラスに属しているかどうかによって異なります。上記の例では、factorialとmainはどちらもMainClassクラスのメソッドです。その結果、mainの定義での階乗の呼び出しは、単にメソッド名「階乗」を参照します。

5
実行されていないJavaの静的ブロック
class Test { public static void main(String arg[]) { System.out.println("**MAIN METHOD"); System.out.println(Mno.VAL); // SOP(9090); System.out.println(Mno.VAL + 100); // SOP(9190); } } class Mno { final static int VAL = 9090; static { System.out.println("**STATIC BLOCK OF Mno\t: " + VAL); } } staticクラスが読み込まれたときにブロックが実行されることを知っています。しかし、この場合、クラス内のインスタンス変数がMnoあるfinalそのため、staticブロックが実行されていません。 どうしてこんなことに?また、を削除した場合final、問題なく動作しますか? static final変数とstaticブロックのどちらが最初に割り当てられますか? finalアクセス修飾子が原因でクラスがロードされない場合、変数はどのようにしてメモリを取得できますか?

6
ファイルスコープで可変的に変更された配列
「.m」ファイルの最上位にある次のようなものに似た、Objective-C実装ファイル全体で使用される定数静的配列を作成したいと思います。 static const int NUM_TYPES = 4; static int types[NUM_TYPES] = { 1, 2, 3, 4 }; NUM_TYPES後でファイルで使用する予定なので、変数に入れたいと思いました。 ただし、これを行うと、エラーが発生します 「ファイルスコープでさまざまに変更された「タイプ」」 これは、配列サイズが変数であることに関係している可能性があることを私は収集します(のように、整数リテラルをそこに置いても、このメッセージは表示されませんstatic int types[4])。 私はこれを修正したいのですが、多分私はそれをすべて間違って行っています...私はここに2つの目標があります: ファイル全体からアクセスできる配列を作成する NUM_TYPESファイル内のさまざまな場所に同じリテラルが散在しないように、変数にカプセル化する 助言がありますか? [編集]これはCのFAQで見つかりました:http://c-faq.com/ansi/constasconst.html

5
同等の静的メソッドと非静的メソッドの速度の大きな違い
このコードでは、mainメソッドでオブジェクトを作成し、そのオブジェクトメソッドを呼び出すとff.twentyDivCount(i)(16010ミリ秒で実行)、このアノテーションを使用して呼び出すよりもはるかに高速にtwentyDivCount(i)実行されます:( 59516ミリ秒で実行)。もちろん、オブジェクトを作成せずに実行する場合は、メソッドを静的にするので、メインで呼び出すことができます。 public class ProblemFive { // Counts the number of numbers that the entry is evenly divisible by, as max is 20 int twentyDivCount(int a) { // Change to static int.... when using it directly int count = 0; for (int i = 1; i<21; i++) { if (a …

4
constメンバー関数が静的データメンバーを変更できるのはなぜですか?
次のC++プログラムでは、関数から静的データメンバーを変更するconstことは正常に機能しています。 class A { public: static int a; // static data member void set() const { a = 10; } }; ただし、関数から非静的データメンバーを変更するconstことはできません。 class A { public: int a; // non-static data member void set() const { a = 10; } }; constメンバー関数がstaticデータメンバーを変更できるのはなぜですか?
86 c++  function  c++11  static  const 


6
ジェネリッククラスの静的メンバーは特定のインスタンスに関連付けられていますか?
これは、実際の質問というよりもドキュメントです。これはまだSOで対処されていないようです(私がそれを見逃していない限り)ので、ここに行きます: 静的メンバーを含むジェネリッククラスを想像してみてください。 class Foo<T> { public static int member; } 特定のクラスごとにメンバーの新しいインスタンスがありますか、それともすべてのFooタイプのクラスに1つのインスタンスしかありませんか? 次のようなコードで簡単に確認できます。 Foo<int>.member = 1; Foo<string>.member = 2; Console.WriteLine (Foo<int>.member); 結果はどうなりますか?また、この動作はどこに文書化されていますか?
84 c#  .net  generics  static 


7
静的メソッド継承の正しい代替手段は何ですか?
静的メソッドの継承がC#でサポートされていないことを理解しています。また、開発者がこの機能の必要性を主張する多くの議論(ここを含む)を読みました。典型的な応答は「静的なメンバーの継承が必要な場合、設計に欠陥があります」です。 OK、OOPは静的継承についても考えたくないので、それに対する私の明らかな必要性は私の設計のエラーを示していると結論付けなければなりません。しかし、私は立ち往生しています。私はこれを解決するためにいくつかの助けを本当にいただければ幸いです。これが課題です... 複雑な初期化コードをカプセル化する抽象基本クラス(Fruitと呼びましょう)を作成したいと思います。一部のコードは仮想メソッド呼び出しに依存するため、このコードをコンストラクターに配置することはできません。 Fruitは、他の具象クラス(Apple、Orange)に継承されます。各クラスは、インスタンスを作成および初期化するために、標準のファクトリメソッドCreateInstance()を公開する必要があります。 静的メンバーの継承が可能であれば、ファクトリメソッドを基本クラスに配置し、派生クラスへの仮想メソッド呼び出しを使用して、具象インスタンスを初期化する必要がある型を取得します。クライアントコードは、Apple.CreateInstance()を呼び出すだけで、完全に初期化されたAppleインスタンスを取得できます。 しかし、明らかにこれは不可能なので、同じ機能に対応するために私のデザインをどのように変更する必要があるかを誰かに説明してもらえますか。
83 c#  .net  inheritance  static 

5
ArrayListにリストに追加された最後のアイテムのN個のコピーが含まれているのはなぜですか?
ArrayListに3つの異なるオブジェクトを追加していますが、リストには最後に追加したオブジェクトの3つのコピーが含まれています。 例えば: for (Foo f : list) { System.out.println(f.getValue()); } 期待: 0 1 2 実際: 2 2 2 私はどんな間違いをしましたか? 注:これは、このサイトで発生する多くの同様の問題に対する標準的なQ&Aとなるように設計されています。
83 java  list  arraylist  static 

2
Kotlinの静的初期化ブロック
Kotlinの静的初期化ブロックに相当するものは何ですか? Kotlinは静的なものを持たないように設計されていることを理解しています。同等のセマンティクスを持つものを探しています-クラスが最初にロードされたときにコードが1回実行されます。 私の特定のユースケースは、Android AppCompatライブラリからDayNight機能を有効にしたい場合で、命令は、Applicationクラスの静的初期化ブロックにコードを配置するように指示しています。

3
静的にリンクされたライブラリ間のシンボルの衝突に対処するにはどうすればよいですか?
ライブラリを作成する際の最も重要なルールとベストプラクティスの1つは、ライブラリのすべてのシンボルをライブラリ固有の名前空間に配置することです。C ++は、namespaceキーワードにより、これを簡単にします。Cでは、通常のアプローチは、識別子にライブラリ固有のプレフィックスを付けることです。 ACコンパイラは、識別子の最初の8つの文字を見てもよいので、:C標準のルールは、(安全なコンパイルのために)それらの上にいくつかの制約を置くfoobar2k_eggsとfoobar2k_spam有効に同じ識別子として解釈することができる-しかし、すべての近代的なコンパイラは、任意の長い識別子が可能になりますですから、私たちの時代(21世紀)では、これについて気にする必要はありません。 しかし、シンボル名/識別子を変更できないライブラリに直面している場合はどうなりますか?静的バイナリとヘッダーしか取得していないか、取得したくないか、自分で調整して再コンパイルすることが許可されていない可能性があります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.