2017-09-17 37 views
-4

enter image description here なぜ("bc" + 2 + 3)には2つの異なる回答がありますか?そして(2 + 3 + "bc")私は"bc"32の順序を変更するが、システムは事前になぜ2つの異なる結果がありますか?

おかげ

+4

評価の順序は – UnholySheep

+0

[MCVE]を入力してくださいので、例えば作業コードの例とサンプル出力。 – juzraai

+0

質問を編集し、スクリーンショットの代わりにコードと出力の両方をコピー/貼り付けてください。インデックス作成はずっと簡単になります。 –

答えて

3

+が算術だけでなく、連結演算子の両方として働く付加するための全く別の答えを提供します。そして、すべての式は左から右に実行されます。したがって、2 + 3 + "bc"の場合は、算術演算子として2と3を追加し、そのとき片側の文字列と他の側の数字を見つけると、連結演算子として機能します。

0

+を使用して文字列に何が追加されても、Javaはそれを文字列に連結するかのように扱います。

各ケースを見てみましょう。

"bc" + 2 + 3 

+ 2つの一番左のオペランドが最初に評価されていることを意味し、左結合です。この場合は"bc" + 2です。これは"bc2"と評価されます。次に、"bc2" + 3を評価し、"bc23"を生成します。

2 + 3 + "bc" 

2つの一番左のオペランドが最初に評価されます。2 + 3式には、文字列が存在しないので、これは5と評価されます。 +は数学的な加算を行います。次に5 + "bc"を評価し、"5bc"を生成します。

0

Javaは、操作を左から右に読み取っています。最初の変数が文字列の場合、残りの値は連結されます。 2番目のケースでは、まず数値を集計し、合計し、その値を次の文字列で連結します。結果は次のようになります:最初のケース: "bc23"と2番目のケース "23bc"。

0

最初の2つの値が計算可能でない限り、文字列値を最初のJavaに配置すると、すべての値が文字列として扱われます。
ここでは、基本的な概念を理解するのに役立つサンプルコードを示します。

public static void main(String[] args) { 
    // TODO code application logic here 
    System.out.println("bc"+2+3); //bc23 
    System.out.println("bc"+(2+3)); //bc5 
     System.out.println(2+3+"bc"); //5bc 
     System.out.println(2+3+"bc"+2+3); //5bc23 
     System.out.println("bc"+2+3==2+3+"bc");// false 

    } 

enter image description here

関連する問題