Javaのメソッド内の最終変数

原則として、最終変数は1回だけ初期化する必要があります。その他の初期化は許可されません。そうであれば、メソッドの中で最終変数が宣言されたときにはどうなりますか?最終変数が宣言されたメソッドが3回呼び出されたとすると、メソッド内の最終変数の宣言文は3回実行され、最終変数は3回初期化されます。このようなシナリオでは、コンパイラはメソッド内で最終変数をどのように維持できますか?

15
これは規約上Javaで特に不正です - いいえ、そうではありません。
追加された 著者 user unknown,
さて、それを試してみるとどうなりますか?
追加された 著者 Brian Roach,
これは本当の疑問です...たとえ[信じられないほど]愚かなことであっても、それに半分真実の歪みがある自己発見可能であっても。
追加された 著者 user166390,
全く問題はありませんが、そのような質問は私に起こりました。
追加された 著者 Bhavesh,

3 答え

ローカル変数はメソッドの持続時間の範囲内にのみあります。変数は、メソッドスコープごとに1回初期化することができます。

JVMがメソッドのデータを保持する方法については、スタックとヒープを参照してください。

16
追加された
しかし、finalメソッドの最後にビットマップを宣言すると、メソッドの呼び出しが終わったとき、またはパッケージやプログラムの終わりで終わったときのライフが終わる
追加された 著者 AHF,

メソッド変数は、メソッドの呼び出しライフサイクル内でスコープされます。

最後の修飾子は、初期化時に、その呼び出しのメソッドの範囲内で再初期化できないようにします。

したがって、メソッド呼び出しごとに、その変数は最終的になります。

15
追加された
メソッドが静的な場合はどうなりますか?
追加された 著者 Avinash Agrawal,

メソッド内の変数の最終的な宣言は、変数の値が宣言されているスコープ内で変更されないようにします。この場合はメソッドのみです。

5
追加された