staticローカル変数
日本語 | 静的局所変数 |
英語 | static local variable |
ふりがな | すたてぃっくろーかるへんすう |
フリガナ | スタティックローカルヘンスウ |
staticによって修飾されたローカル変数。
Javaでは宣言できない。
C言語では使用することができる。
C言語の場合、staticローカル変数は「最初に呼び出された時のみ宣言される変数」となる。つまり、その後何度関数を呼び出しても、最初に宣言されたstaticローカル変数が使用されるため、「アプリケーションでただ一つだけ存在する変数とする」「関数を呼び出した数を数える」といった目的に使用される。
このstaticローカル変数は、C++言語では、メンバ関数(Javaのメソッドに当たるもの)であっても同様に機能するため、インスタンスに関係なくひとつだけ存在することになり、オブジェクト指向とは合わない存在と言える。
そのためか、Javaの言語仕様には存在しない。
Javaでは宣言できない。
C言語では使用することができる。
C言語の場合、staticローカル変数は「最初に呼び出された時のみ宣言される変数」となる。つまり、その後何度関数を呼び出しても、最初に宣言されたstaticローカル変数が使用されるため、「アプリケーションでただ一つだけ存在する変数とする」「関数を呼び出した数を数える」といった目的に使用される。
このstaticローカル変数は、C++言語では、メンバ関数(Javaのメソッドに当たるもの)であっても同様に機能するため、インスタンスに関係なくひとつだけ存在することになり、オブジェクト指向とは合わない存在と言える。
そのためか、Javaの言語仕様には存在しない。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// staticローカル変数は存在しません。
// static int i = 100;
// コンパイルエラー:
// 引き数 i の無許可の修飾子 ; final のみ許可されています。
}
}
public class Sample
{
public static void main( String[] args )
{
// staticローカル変数は存在しません。
// static int i = 100;
// コンパイルエラー:
// 引き数 i の無許可の修飾子 ; final のみ許可されています。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // staticローカル変数は存在しません。 // static int i = 100; // コンパイルエラー: // 引き数 i の無許可の修飾子 ; final のみ許可されています。 } }