我刚刚在高中的AP Comp sci开始,我偶然发现了一个关于字符串中+运算符的问题
为什么
System.out.println ("number" + 6 + 4 * 5)
结果编号620
而
String s = "crunch";
int a = 3, b = 1;
System.out.print(s + a + b);
System.out.print(b + a + s);
结果为crunch314crunch
?
谢谢
答案 0 :(得分:3)
当两个运算符共享一个操作数时,优先级较高的运算符优先。例如,1 + 2 * 3被视为1 +(2 * 3),而1 * 2 + 3被视为(1 * 2)+ 3 ,因为乘法具有比添加更高的优先级 (+)。
答案 1 :(得分:0)
如果你想对System.out.println
进行任何数学运算,请用大括号包装它,因为Java在第一位看到String。
尝试System.out.println ("number" + (6 + 4 * 5))
。
对于第二个示例:System.out.print(s + (a + b));
在这种情况下,您的总和为a
和b
。
但在System.out.print(b + a + s);
b
和a
留在第一位。编译器执行a+b
第一个和添加字符串后,您不需要大括号
答案 2 :(得分:0)
“*”的运算符优先级高于“+”,这意味着在字符串连接发生之前计算表达式“4 * 5”。
请参阅http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
答案 3 :(得分:0)
它与运算符优先级有关:
首先,4 * 5 = 20
其次,“数字”与6连接,进一步与20连接。
答案 4 :(得分:0)
在您的第一个示例中,由于您使用了乘法运算符,因此在连接到其他字符串之前将4乘以5。
对于第二个示例,您在String之前以2整数开始,在连接到String之前将首先计算该字符串。
答案 5 :(得分:0)
为什么System.out.println(“number”+ 6 + 4 * 5)导致number620
因为*的优先级高于+,所以结果为number620
。
String s =“crunch”; int a = 3,b = 1; System.out.print(s + a + b); System.out.println(b + a + s);导致crunch314犯罪?
这里,+用作运算符重载而不是二进制运算。所以,'+'做concat操作,而不是sum操作。因此,结果是crunch314crunch
。
答案 6 :(得分:0)
它涉及两件事:
+
具有以下规则:
int + int => int
int + string => String
String + int => String
String + String => String
也就是说,只要涉及String
,+
就意味着连接。
具有相同优先级的运算符从左到右进行计算。因此
String + int + int => String + int => String
但
int + int + String => int + String => String
第一种情况仅使用连接,而第二种情况在第一步中使用添加。
在第一个示例中,*
的优先级高于+
,因此首先执行乘法。
String + int * int => String + int => String
答案 7 :(得分:0)
您的第一个例子:“数字”+ 6 + 4 * 5
度Acc。首先计算运算符优先级*
,因此它变为“number”+ 6 + 20
现在,+
的相关性为左 - >右(L-> R),因此+成为连接运算符,因为它与String
一起使用,因此表达式变为“number6”+ 20 ,然后“number620 “强>
(实际上,int
在连接之前转换为String
同样,你的第二个例子:
仅+
运算符并从L-> R
“紧缩”+ 3 + 1 =“crunch3”+ 1 =“crunch31”
1 + 3 +“紧缩” = 4 +“crunch”=“4crunch”
答案 8 :(得分: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.
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()
语句
crunch314crunch