Javaの条件付きブロックでのローカル変数の初期化
Javaコンパイラでは、初期化されていないローカル変数を破棄することはできません。ローカル変数が条件付きブロック内で初期化される場合、発生する可能性のある3つの可能性があります-
-
条件付きブロックに値が指定され、指定された条件が真の場合、コードは正常にコンパイルされます。
-
条件付きブロックに(値ではなく)変数が指定されていて、条件が真の場合、コードはコンパイルエラーを出します。
-
チェックする必要のある条件がfalseの場合、コードはコンパイルエラーを出します。
ローカル変数がコード内の条件付きブロックの外側でデフォルト値に初期化されている場合、エラーは発生せず、コードは正常にコンパイルされます。
例
public class Demo{ public static void main(String args[]){ int i = 35; int j = 0; if (i > 32){ j = i + 11; } System.out.println("The value is: " + j); } }
出力
The value is: 46
Demoという名前のクラスには、main関数が含まれています。ここでは、2つの変数が定義されており、変数が特定の数値より大きい場合は、別の値がその変数に追加され、「if」ブロックが閉じられます。次に、結果がコンソールに出力されます。
-
最終的にブロックは常にJavaで実行されますか?
はい、JVMのクラッシュまたはSystem.exit()の呼び出しのいずれかが原因でプログラムが異常終了しない限り、finallyブロックは常に実行されます。 例外が発生したかどうかに関係なく、finallyブロックは常に実行されます。 ファイルやDB接続を閉じるなどの例外が発生した場合は、finallyブロックを使用してコードをクリーンアップします。 system.exit()などのステートメントがtryブロックに書き込まれると、プログラムが自動的に終了し、finallyブロックが実行されない場合があるため、finallyブロックが常に実行されるとは言えません。 tryブロックの電源障
-
Javaの最終変数
最終変数は明示的に一度だけ初期化できます。 finalとして宣言された参照変数を、別のオブジェクトを参照するように再割り当てすることはできません。 ただし、オブジェクト内のデータは変更できます。したがって、オブジェクトの状態は変更できますが、参照は変更できません。 変数を使用する場合、最終修飾子 多くの場合、定数をクラス変数にするためにstaticとともに使用されます。 例 public class Test { final int value = 10; // The following are examples of declaring