(いくつかの計算は、単一のステートメントで実行されなければならない場合、私はmethodTwoが読めなくなってきて見ることができます)。次のバイトコードで
methodOne()
結果:
public int methodTwo();
0 aload_0 [this]
1 getfield com.example.Test.local_int_one : int [13]
4 aload_0 [this]
5 getfield com.example.Test.local_int_two : int [15]
8 iadd
9 ireturn
しかし、この最適化があまりにもマイナーであることに注意してください、この場合、コードの可読性:
public int methodOne();
0 aload_0 [this]
1 getfield com.example.Test.local_int_one : int [13]
4 aload_0 [this]
5 getfield com.example.Test.local_int_two : int [15]
8 iadd
9 istore_1 [total]
10 iload_1 [total]
11 ireturn
そして、ここではmethodTwo()
のためのバイトコードですいくつかのJava命令のほうが重要です。
一時変数がコードの可読性に寄与すると考える場合は、必ずそれを使用してください。
私はあなた自身の質問に答えたと思います。 –
バイトコードを確認してください。 (2)は命令が1つ少ない。 – EJP
@EJP:最適化を有効にするとどうなりますか?現在、私はJavaバイトコードビューアにアクセスできません。しかし明らかにデバッグモードの結果、ある種の1対1マッピングが発生します。 –