+运算符和字符串

时间:2013-09-12 06:51:42

标签: java string operator-keyword

我刚刚在高中的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

谢谢

9 个答案:

答案 0 :(得分:3)

取决于It's precedence order

  

当两个运算符共享一个操作数时,优先级较高的运算符优先。例如,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));

在这种情况下,您的总和为ab

但在System.out.print(b + a + s); ba留在第一位。编译器执行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)

它涉及两件事:

  • 运算符优先级
  • string concatenation vs addition

+具有以下规则:

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