final変数
日本語 | 最終変数 |
英語 | final variable |
ふりがな | ふぁいなるへんすう |
フリガナ | ファイナルヘンスウ |
値を変更できない変数。
finalで修飾された変数。「final 型 変数名;」のように、変数宣言の修飾子にfinalを使用した変数。
final変数は、変数に格納されている値を変更できない。つまり「定数」とすることができる。
ただし、変更できないのは格納されている「値」のみである。そのため、参照型変数の場合、変更できないのは参照値のみで、参照先のインスタンスが格納する値はいくらでも変更できるため注意が必要。そのため、クラス及び配列の場合にはあまり効果がないと考えた方がいい。
ほとんどの場合はstatic finalフィールドの宣言時に使用する。
finalで修飾された変数。「final 型 変数名;」のように、変数宣言の修飾子にfinalを使用した変数。
final変数は、変数に格納されている値を変更できない。つまり「定数」とすることができる。
ただし、変更できないのは格納されている「値」のみである。そのため、参照型変数の場合、変更できないのは参照値のみで、参照先のインスタンスが格納する値はいくらでも変更できるため注意が必要。そのため、クラス及び配列の場合にはあまり効果がないと考えた方がいい。
ほとんどの場合はstatic finalフィールドの宣言時に使用する。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// final変数を作ります。
final int i = 100;
// このiの値は変更できません。
// i = 200;
// コンパイルエラー:
// The final local variable i cannot be assigned. It must be blank and not using a compound assignment
// final変数を初期化しないで宣言すれば、
// 最初の代入時は「初期化」と見なされて
// 値を変更することができます。
final int iNotInit;
iNotInit = 300;
// でも二度目は不可。
// iNotInit = 400;
// コンパイルエラー:
// final のローカル変数 iNotInit はすでに割り当てられています。
// finalで変更できないのは、変数に格納されている
// 「値」です。
// 参照型変数の場合、変更できないのは「参照値」のみで、
// 参照先のインスタンスの中身は変更し放題です。
final StringBuffer strbuf = new StringBuffer();
strbuf.append( "あいうえお" );
strbuf.append( "かきくけこ" );
// このように変更し放題ですが、参照値は変えられません。
// strbuf = new StringBuffer();
// コンパイルエラー:
// The final local variable i cannot be assigned. It must be blank and not using a compound assignment
}
}
public class Sample
{
public static void main( String[] args )
{
// final変数を作ります。
final int i = 100;
// このiの値は変更できません。
// i = 200;
// コンパイルエラー:
// The final local variable i cannot be assigned. It must be blank and not using a compound assignment
// final変数を初期化しないで宣言すれば、
// 最初の代入時は「初期化」と見なされて
// 値を変更することができます。
final int iNotInit;
iNotInit = 300;
// でも二度目は不可。
// iNotInit = 400;
// コンパイルエラー:
// final のローカル変数 iNotInit はすでに割り当てられています。
// finalで変更できないのは、変数に格納されている
// 「値」です。
// 参照型変数の場合、変更できないのは「参照値」のみで、
// 参照先のインスタンスの中身は変更し放題です。
final StringBuffer strbuf = new StringBuffer();
strbuf.append( "あいうえお" );
strbuf.append( "かきくけこ" );
// このように変更し放題ですが、参照値は変えられません。
// strbuf = new StringBuffer();
// コンパイルエラー:
// The final local variable i cannot be assigned. It must be blank and not using a compound assignment
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // final変数を作ります。 final int i = 100; // このiの値は変更できません。 // i = 200; // コンパイルエラー: // The final local variable i cannot be assigned. It must be blank and not using a compound assignment // final変数を初期化しないで宣言すれば、 // 最初の代入時は「初期化」と見なされて // 値を変更することができます。 final int iNotInit; iNotInit = 300; // でも二度目は不可。 // iNotInit = 400; // コンパイルエラー: // final のローカル変数 iNotInit はすでに割り当てられています。 // finalで変更できないのは、変数に格納されている // 「値」です。 // 参照型変数の場合、変更できないのは「参照値」のみで、 // 参照先のインスタンスの中身は変更し放題です。 final StringBuffer strbuf = new StringBuffer(); strbuf.append( "あいうえお" ); strbuf.append( "かきくけこ" ); // このように変更し放題ですが、参照値は変えられません。 // strbuf = new StringBuffer(); // コンパイルエラー: // The final local variable i cannot be assigned. It must be blank and not using a compound assignment } }