午前2時00分Javaコンパイラの最適化

最適化1

値の代入の右側が範囲を超えていない場合は、バイト/ショート/炭3種類については、その後、javacコンパイラは、自動的に私たちのために何かを暗黙的に(バイト)(ショート)(文字)を追加します。

  • 範囲を残していない場合は、強力なターンコンパイラを作ります。
  • 範囲の左側より右側ならば、コンパイラエラーを指示。

コード例

パッケージdemo03_Optimize; 

パブリック クラスDemo01Optimize { 

    公共 静的 ボイドメイン(文字列[]引数){
         // 右INT実際数が、左側の範囲を超えていない、正確です。
        // INT - >バイト、自動型変換ではない
        バイト NUM1 = / * (バイト)* / 30; // 左側の右側範囲超えない
        のSystem.out.println(NUM1を); 

        // バイトNUM2 = 128。// 範囲の左側より右側、所与
         // INT - >チャー、範囲超えない
         // コンパイラを自動的に追加します何か暗黙(チャー)
        チャー C = / * (CHAR)* / 65 ;
        System.out.println(c)前記 
    } 
}

コードの実行後の結果

最適化2

変数への代入すると、それらのすべての右側の式が一定であれば、何の変数、コンパイラjavacは結果を計算し、いくつかの定数の発現を指示しません。例えば:右;:;短い結果が= 13ショート結果= 5 + 8 //右側の等号の後には、すべての定数、コンパイラ、[]に直接等価で得られたの.classバイトコード・ファイルを計算に関与しない変数であります数値定数の結果は、そう正しく、左の範囲を超えていません。これは、「一定の最適化コンパイラ」と呼ばれています。しかしノート:​​あなたがそれらの発現に関与する変数を持っていたら、これを最適化することができません。

コード例

パッケージdemo03_Optimize; 

パブリック クラスDemo02Optimize {
     公共 静的 ボイドメイン(文字列[]引数){
         ショート NUM1 = 10; // 正しい言葉遣い、右、左の範囲、超えていない

        ショート A = 5。 ショート B = 8 ;
         // ショートショート+ - > + int型はint - > int型
         // ショート結果= A + B; // エラーの書き込み!int型であるように、左のニーズ

        // 右の変数、代わりに定数を使用して、そして唯一の2つの定数、誰もいない
        ショート結果+ = 5 8。; 
        System.out.printlnは(結果); 

        // 短い結果2 5 + A =。 + 8; // 18
    } 
}

コードの実行後の結果

 

 

 

おすすめ

転載: www.cnblogs.com/wurengen/p/11863783.html