最終修飾子:
最終的に変更されたメンバー変数には、プログラマによって明示的に指定された初期値が必要です。
クラスのフィールド: 初期値は、静的初期化ブロック内、またはフィールドの宣言時に指定する必要があります。
インスタンス フィールド: フィールドは非静的初期化ブロックで宣言するか、コンストラクターで初期値を指定する必要があります。
最終ローカル変数: プログラマが明示的に初期化する必要があります。
最終的に変更された基本変数と参照型変数の違いは何ですか?
Final によって変更された基本変数: 基本変数は再割り当てできません。
最終的に変更された参照変数: この参照型によって参照されるアドレスが変更されないことのみが保証されます。つまり、常に同じオブジェクトを参照しますが、このオブジェクトは完全に変更される可能性があります。
次のようにコードをコピーします。
/**
*/
java.util.* をインポートします。
パブリッククラスデモ5
{
public static void main(String[] args)
{
最終 B b = 新しい B(22);
b.test();
// 値を合法的に変更しますが、依然として同じ参照を指します
b.setAge(20);
System.out.println(b.getAge());
// 違法
// b = null;
b.test2();
}
}
/**
fianl はメンバー変数を変更します
*/
クラスA
{
//正当な
最終整数 a = 10;
//コンストラクタまたは初期化ブロックで初期値を指定
最終文字列 str;
最終的な int c;
最終的な静的ダブル d;
{
str = "こんにちは";
//違法
// a = 100;
}
静的
{
d = 100;
}
// コンストラクターは、初期化ブロックで指定されていないフィールドの初期値を指定できます
publicA()
{
// 違法
// str = "ddd";
c = 1000;
}
public double changFinal()
{
// 通常のメソッドではfinalに初期値を指定することはできません
// d = 1000.90 を返します;
0を返します。
}
}
/**
fianl は配列オブジェクトを変更します
*/
クラスB
{
プライベートの年齢。
publicB()
{
}
パブリック B(整数)
{
this.age = 年齢;
}
public void setAge(int age)
{
this.age = 年齢;
}
public int getAge()
{
this.age を返します。
}
パブリック void テスト()
{
最終 int[] arr={23,434,56,898};
System.out.println(Arrays.toString(arr));
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
arr[2] = 200;
System.out.println(Arrays.toString(arr));
//次の Arr の再代入は不正です
// arr = null;
}
/**
最終的な理解が深まる
*/
public void test2()
{
文字列 str1 = "より良い未来";
//定数プール内の「Better Future」への直接参照
文字列 str2 = "美しい"+"未来";
//真実
System.out.println(str1 == str2);
文字列 s1 = "美しい";
文字列 s2 = "将来";
文字列 s3 = s1+s2;
//false s1 s2 はコンパイル時に決定できない単なる変数です
//コンパイル時に決定したい場合は、final を使用して s1 s2 を変更します
System.out.println(str1 == s3);
}
}
Java の Final 修飾子について何かご存知ですか? コメントで明確に説明されていると思うので、ここでは詳しく説明しません。