1

私は高校で AP Comp sci を始めたばかりで、文字列の + 演算子に関する質問に出くわしました。

number620 System.out.println ("number" + 6 + 4 * 5) になる理由

一方

String s = "crunch";
int a = 3, b = 1;
System.out.print(s + a + b);
System.out.print(b + a + s);

結果はcrunch314crunch

ありがとう

4

9 に答える 9

3

優先順位によって異なります

2 つの演算子がオペランドを共有する場合、優先順位の高い演算子が先になります。たとえば、1 + 2 * 3 は 1 + (2 * 3) として扱われますが、1 * 2 + 3 は (1 * 2) + 3 として扱われます。これは、乗算が加算(+)よりも優先されるためです。

于 2013-09-12T06:53:53.753 に答える
0

System.out.println ("number" + 6 + 4 * 5) が number620 になるのはなぜですか?

* は + よりも優先順位が高いため、結果はnumber620.

文字列 s = "クランチ"; int a = 3、b = 1; System.out.print(s + a + b); System.out.println(b + a + s); crunch314crunch の結果?

ここで、+ は二項演算としてではなく、演算子のオーバーロードとして使用されます。したがって、「+」は合計操作ではなく連結操作を行います。したがって、結果はcrunch314crunchです。

于 2013-09-12T06:58:19.773 に答える
0

それは次の 2 点についてです。

  • 演算子の優先順位
  • 文字列連結と加算

には+次の規則があります。

int + int => int
int + string => String 
String + int => String 
String + String => String

つまり、 aStringが含まれるとすぐに、+連結を意味します。

優先順位が同じ演算子は、左から右に評価されます。したがって

String + int + int => String + int => String

しかし

int + int + String => int + String => String

最初のケースでは連結のみを使用しますが、2 番目のケースでは最初のステップで加算を使用します。


最初の例で*は、 よりも優先順位が高い+ため、乗算が最初に実行されます。

String + int * int => String + int => String
于 2013-09-12T06:58:43.717 に答える
0

演算子の優先順位とその結合性がすべてです。

最初の例: "number" + 6 + 4 * 5

ACC。to 演算子の優先順位*が最初に計算されるため、「number」+ 6 + 20になります。

ここで+、結合性は Left -> Right (L->R) であるため、 + は と一緒Stringに使用される連結演算子になり、式は"number6" + 20になり、次に"number620"になります。

(実際には連結前にint変換されます)String

同様に、2番目の例:

演算子のみ+で、L->R から実行を開始

「クランチ」 + 3 + 1 = 「クランチ 3」 + 1 = 「クランチ 31」

1 + 3 + "クランチ" = 4 + "クランチ" = "4 クランチ"

于 2013-09-12T07:00:02.013 に答える
0

ご質問と回答によると

説明は

1.
  A)System.out.println ("number" + 6 + 4 * 5);
  B)System.out.println ("number6" + 4 * 5);
  C)System.out.println ("number6" + 20);
  D)System.out.println ("number620");

そして、次のような出力を出力します

number620

そして2つ目は

2.
  A)System.out.print("crunch" + 3 + 1);
    System.out.print(1 + 3 + "crunch");
  B)System.out.print("crunch3" + 1);
    System.out.print(4 + "crunch");
  C)System.out.print("crunch31");
    System.out.print("4crunch");

print()そして、ステートメントを使用したため、出力を1行で出力します

crunch314crunch
于 2013-09-12T07:02:16.187 に答える
0

Java は文字列を 1 番目に認識するため、数学を に変換したい場合はSystem.out.println、中括弧で囲みます。

試してみてくださいSystem.out.println ("number" + (6 + 4 * 5))

2 番目の使用例:System.out.print(s + (a + b));

この場合、 と の合計がaありbます。

しかし、1位にとどまりますSystem.out.print(b + a + s); baコンパイラはa+b最初に文字列を追加した後、中括弧は必要ありません

于 2013-09-12T06:53:50.507 に答える
0

演算子の優先順位と関係があります。

まず、4 * 5 = 20

2 つ目は、「数値」が 6 と連結され、さらに 20 と連結されます。

于 2013-09-12T06:56:19.363 に答える
0

最初の例では、乗法演算子を使用したため、4 は他の文字列に連結される前に 5 に乗算されます。
2 番目の例では、文字列に連結される前に最初に計算される文字列の前に 2 つの整数から始めました。

于 2013-09-12T06:57:29.987 に答える