次のようなブール状態に応じて出力を作成する必要がありました
String smily = null;
StringBuffer buff = new StringBuffer();
buff.append(", " + smily == null ? ":)" : ":("); //$NON-NLS-1$
System.out.println(buff.toString());
問題は文字列作成ステートメントです
", " + smily == null ? ":)" : ":("
私は2つの異なるEclipse環境でテストしました(また、2つの異なるJavaバージョンである可能性もありますが、これはチェックしていません)、結果は異なりました。
結果 1:
:(
結果 2:
間違い:(
もちろん、ブラケットを追加した場合は機能します
buff.append(", " + (smily == null ? ":)" : ":(")); //$NON-NLS-1$
期待される結果:
、:)
なぜJavaがステートメントをそのように解釈するのか、誰かが私に説明してもらえますか?
ありがとう