この章では静的変数、静的メソッドについて説明します。
静的変数・静的メソッドはオブジェクトを作成してから使用するのではありません。
つまり、静的変数・静的メソッドはオブジェクトに属しているのではなくクラスに属していると言えます。
詳しい説明は例の後で行ないます。
では例を見てみましょう。 フィールド変数やメソッドを宣言する時に「static」を付けると静的変数、静的メソッドになります。 これまで使用してきたフィールド変数やメソッドはオブジェクトを作ってから使用しましたが、「static」を付けた変数やメソッドはオブジェクトを作成しなくても使用することが出来ます。
つまり、静的変数、静的メソッドはオブジェクトに属しているのではなく、クラスに属しているのです。
ですので、静的変数にアクセスするにはクラス名を使って(クラス名と変数名の間にはドットがあります)という形式で書きます。 ではこの静的変数をカウントしている箇所はどこかと言いますと以下で静的変数をカウントしています。
つまり、コンストラクタが呼び出されるたびに静的変数であるcount1に1を足しています。 もう一か所静的変数を出力している箇所があるのですが、それがresultメソッドです。ここでもcount1変数がカウントしているのが分かります。
静的変数も変数の一種ですので、普通のメソッドの中で使う事が出来ます。 結果は以下の通りです。 次は静的メソッドの例をみてみましょう。 静的変数の例ではコンストラクタで静的変数に足していましたが、この例では静的メソッドで静的変数に値を足しています。 静的メソッドを実行する場合にはという構文で書きます。
この例では以下の箇所です。
Ginkou.count();
この例では2回静的メソッドを実行しているので実行するごとに1が足されます。
静的メソッドで気を付けなければいけないことは静的メソッド内ではthisを使う事ができませんし、フィールド変数も使う事ができません。
結果は以下の通りです。
タグ: 静的変数
静的変数と静的関数について知ろう
この章では静的変数と静的メソッドについて説明します。
詳しい説明は以下の例の後に行います。 これまでのクラスはオブジェクトを作成してからメンバ変数にデータを入れていましたが、静的変数や静的メソッドはオブジェクトを作成しなくても使用することが出来ます。
つまり、これまでのクラスのメンバ変数やメンバ関数は個々のオブジェクトに属しているものと言えます。
ですので、メンバ変数はオブジェクトを複数作成しても、オブジェクト間でメンバ変数の関係性はありません。
それに対して静的変数や静的関数はクラスに属していると言えます。
後で説明しますが静的変数にはデータの連続性があります。
静的変数は、グローバル変数と同じ性質を持ちます。
クラスの中での静的変数や静的メソッドの作成方法はクラスの中に「static」を付けて作成します。 次に静的変数や静的関数を実行する方法について説明します。 例えばこの例では以下のように静的関数を実行しています。 この例にはありませんが静的変数の値を出力したい場合には以下のように書きます。 そして、この例では2回静的メソッドを実行していますが、実行するごとにcount変数に1が足されていきます。
カウントしている箇所は以下のコンストラクタの箇所です(オブジェクトを2個作成しているので、2回コンストラクタが実行されているわけです)。
つまり、静的変数はオブジェクトを何個作成しても値が1つであることが分かります。 [補足]
静的関数の中には通常のメンバ変数を入れることは出来ませんので注意してください。
結果は以下の通りです。
グローバル変数とローカル変数について知ろう
この章ではグローバル変数とローカル変数について説明します。
詳しい説明は例の後に行います。
では例をみてみましょう。 グローバル変数とは関数の外で宣言された変数のことを言います。
この例で言いますとがグローバル変数です。
これまではmain関数の中で変数を使用してきましたが、このaのように関数の外で宣言をするとグローバル変数になります。
グローバル変数は以下の通り、どの関数の中でも使用することが出来ます。
次にローカル変数について説明します。
ローカル変数とは関数の中で宣言された変数のことを言います。 ローカル変数は宣言をした関数の中でしか使用することができませんので、複数の関数で同じ変数名を使用しても問題ありません。
この例であればmain関数とtashizan関数の中のローカル変数は同じ名前の変数名を付けてもいいです。
例えば以下の例のようにmain関数とa関数の中でnumber変数を使用していますが、これらはお互いに影響を受けることはありません。
つまり、同じ変数名でも全く違う変数です。 ではもっと理解を深めるために次の例を見てみましょう。
初めにグローバル変数とローカル変数の確認から始めます。 function1関数の中で宣言している変数はローカル変数です。
main関数の中で宣言している変数はローカル変数です。 初めに、main関数内のローカル変数がprintfで出力されて,3と4が出力されます。
ローカル変数の有効範囲は宣言をした関数の中だけです。
次は変数の寿命について説明します。関数の外でグローバル変数であるを宣言していますが、グローバル変数はプログラムが実行されてから終了するまで値を記憶しています。 後ほど説明しますがローカル変数はが1回実行される度にクリアされるので値を保持することができません。
次はstaticについて説明します。
static int a=0;
関数内で変数にstaticを付けないと、ただのローカル変数になってしまいますが、staticを付けることでグローバル変数と同じ機能を持つことが出来ます。
つまり、プログラムが実行されてから終了するまで値を記憶させておくことが出来ます。
このstaticが付いた変数を「静的変数」と言います。
functionは4つありますが、1回実行される度に静的変数はにより1が足されます。 結果、 は値が1つずつ増えて「1,2,3,4」となります。
次はローカル変数について説明します。
function関数内で宣言されているはローカル変数です。
ローカル変数は関数が実行される度にデータがクリアにされるので情報を保持することはできません。 結果は以下の通りです。