編集1
免責事項:これは実際には演算子ではなく、スペースのないand演算子であることはわかっています。 また、これを使用する理由がないこともわかっています。この質問は単なる好奇心からです。+++
+
++
+
したがって、Java でとの間のスペースが必要かどうかを確認したいと思い++var
ます。
ここに私のテストコードがあります:
int i = 0;
System.out.println(i);
i = i +++i;
System.out.println(i);
これは出力します:
0
1
これは、 first と second の間にスペースがあるかのように、期待どおりに機能し+
ます。
次に、文字列連結で試しました:
String s1 = "s " + ++i;
System.out.println(s1);
// String s2 = "s " +++i;
これは出力します:
s 2
ただし、3 行目のコメントが解除されている場合、コードはコンパイルされず、次のエラーが発生します。
Problem3.java:13: unexpected type
required: variable
found : value
String s2 = "s " +++i;
^
Problem3.java:13: operator + cannot be applied to <any>,int
String s2 = "s " +++i;
^
文字列連結と整数加算の動作の違いの原因は何ですか?
編集2
Abhijit のフォローアップの質問で議論されているように、人々が言及したルール (より大きなトークン ++ が最初に解析され、短いトークン ++ の前に解析される) は、Munchy Munchy ルールと呼ばれるように見えるこのプレゼンテーションで議論されています。