Prerequisite : static variables, final keyword
静的変数です。 変数の値が変化しない場合、インスタンス変数を使用するのは良い選択ではありません。 その時は、その変数にstatic修飾子をつければよいのです。 変数をstaticと宣言すると、クラスレベルで1つの変数が作成され、オブジェクトと共有されます。 この静的変数に変更があると、他のオブジェクトの動作に反映されます。 もし、私たちがスタティック変数を初期化しないなら、デフォルトでJVMはスタティック変数のためのデフォルト値を提供します。
しかし、final 修飾子を使用して静的変数を宣言する場合、次の規約に注意する必要があります。
- 変数を static としてのみ宣言すると、それが宣言されているクラスの 1 つまたは複数のインスタンスがその値を変更する可能性があります。
final static variableに関する重要なポイント:
- 変数の初期化 必須:もしstatic variableがfinalとして宣言されたら、我々はそれを使うかどうかにかかわらず明示的に初期化を実行しなければならない。
class
Test {
final
static
int
x;
public
static
void
main(String args)
{
}
アウトプットを行います。
error: variable x not initialized in the default constructor
- クラス読み込み前の初期化 : 最終静的変数の場合、クラス読み込み完了前に初期化することが必須となります。 最終静的変数は宣言時に初期化することができます。
class
Test {
final
static
int
x =
10
;
public
static
void
main(String args)
{
System.out.println(x);
}
}
出力されます。
10
- スタティックブロック内での初期化 : スタティックブロック内で最終スタティック変数を初期化することも可能です。
class
Test {
final
static
int
x;
static
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
出力されます。
10
上記以外の方法でfinal static変数を初期化しようとすると、コンパイルタイムエラーが発生します。
class
Test {
final
static
int
x;
public
static
void
m()
{
x =
10
;
}
public
static
void
main(String args)
{
System.out.println(x);
}
}
出力します。
error: cannot assign a value to final variable x
final static variableの実装
class
MainClass {
final
static
String company =
"GFG"
;
String name;
int
rollno;
public
static
void
main(String args)
{
MainClass ob =
new
MainClass();
ob.company =
"Geeksforgeeks"
;
ob.name =
"Bishal"
;
ob.rollno =
007
;
System.out.println(ob.company);
System.out.println(ob.name);
System.out.println(ob.rollno);
}
}
出力されます。
error: cannot assign a value to final variable company
この記事はBishal Kumar Dubeyによって寄稿されました。 GeeksforGeeksが好きで、貢献したい場合は、contribute.geeksforgeeks.orgを使って記事を書くか、[email protected] まで記事を郵送することもできます。 あなたの記事がGeeksforGeeksのメインページに表示され、他のGeeks.
を助けるのを参照してください。
- クラス読み込み前の初期化 : 最終静的変数の場合、クラス読み込み完了前に初期化することが必須となります。 最終静的変数は宣言時に初期化することができます。