2012-05-10 6 views
1

ラインAとラインがラインBとマークされたとしてマークされた行の違いは何ですか?finalとfinalでない変数の乗算の違いは何ですか?

public class ConstantFolding { 

    static final int number1 = 5; 
    static final int number2 = 6; 

    static int number3 = 5; 
    static int number4 = 6; 

    public static void main(String[ ] args) { 
     int product1 = number1 * number2;    //line A 
     int product2 = number3 * number4;    //line B 
    } 
} 

このコードスニペットを検討違いはありません

+3

おそらく少し質問を編集したあとにもう一度開くと投票しますが、おそらくもっと冗長に書かれた可能性のある投稿のコーティングでおそらく有効な質問(非常に良い回答を引き起こしました)私は完全に間違っている? –

+1

また、それは3つの票を下げるに値しません – keyser

答えて

8

差がproduct1ために必要な乗算は定数でnumber1ようnumber2コンパイル時に行われることです。

number3number4の値が変更される可能性があるため、実行時にproduct2の計算がコンパイルされます。実際には、値を変更してmainに再度電話をかけることができます。

定数式と定数変数の詳細については、JLSのセクション15.284.12.4を参照してください。

+0

興味深い。意味があるが、心に来なかった。いい答えだ。 – teh1

+0

@ジョン - あなたは-4質問をして、Javaについて今日学んだ最も興味深い新しいものにしました –

+2

@EranMedan:Excellent!何かを回すのがいつも嬉しいです。 –

1

product1product2は、両方の30

メッセージに等しく、あなただけの任意の説明もなく、コード文を投稿することはできませんので、あなたを打ちます。

+3

javapを使用して生成されたバイトコードを見て、コードをコンパイルしてください... –

+0

私はプログラム的な違いやランタイムやコンパイル時の違い、またはそのようなものを求めていました。 ..私はそれを最終的に得た..しかしバイトコードを見る方法。 ? – sam

関連する問題