Java +;运算符和字符串
我高中刚开始学习AP Comp sci,我偶然发现了一个关于字符串中+运算符的问题 为什么Java +;运算符和字符串,java,string,operator-keyword,Java,String,Operator Keyword,我高中刚开始学习AP Comp sci,我偶然发现了一个关于字符串中+运算符的问题 为什么 System.out.println(“数字”+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 谢谢如果您想对System.out.println进行任何运算,请用大括号将其括起来,因为J
System.out.println(“数字”+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
谢谢如果您想对
System.out.println
进行任何运算,请用大括号将其括起来,因为Java在第一位看到字符串
尝试System.out.println(“数字”+(6+4*5))
对于第二个示例,使用:System.out.print(s+(a+b))代码>
在这种情况下,您有a
和b
之和
但在System.out.print中(b+a+s)代码>b
和a
排在第一位。编译器在第一次添加字符串后不需要大括号,这取决于
当两个运算符共享一个操作数时,优先级较高的运算符优先。例如,1+2*3被视为1+(2*3),而1*2+3被视为(1*2)+3,因为乘法的优先级高于加法
“*”的运算符优先级高于“+”,这意味着表达式“4*5”是在字符串串联之前计算的
请参见它与运算符优先级有关:
首先,4*5=20
第二,“number”与6相连,后者进一步与20相连。在第一个示例中,由于您使用了乘法运算符,所以在连接到其他字符串之前,将4乘以5
对于第二个示例,您从字符串前面的2整数开始,该字符串将在连接到字符串之前首先计算
为什么System.out.println(“数字”+6+4*5)会产生数字620
因为,*的优先级高于+,所以结果是number620
字符串s=“crunch”;INTA=3,b=1;系统输出打印(s+a+b);
系统输出打印项次(b+a+s);结果是crunch314crunch
这里,+用作运算符重载,而不是二进制操作。所以,“+”执行concat运算,而不是sum运算。因此,结果是crunch314crunch
这是关于两件事:
- 运算符优先级
- 字符串串联与加法
+
具有以下规则:
int + int => int
int + string => String
String + int => String
String + String => String
也就是说,只要涉及字符串
,+
就意味着连接
具有相同优先级的运算符从左到右求值。所以
String + int + int => String + int => String
但是
第一种情况仅使用串联,而第二种情况在第一步中使用加法
在第一个示例中,*
的优先级高于+
,因此首先执行乘法
String + int * int => String + int => String
这都是关于运算符优先级和它们的关联性。
您的第一个示例:“数字”+6+4*5
根据运算符优先级,首先计算*
,因此它变为“数字”+6+20
现在,+
的关联性是Left->Right(L->R),因此+成为一个串联运算符,因为它与字符串一起使用,所以表达式变成“number6”+20,然后变成“number620”
(实际上,int
在连接之前被转换为String
)
同样,您的第二个示例:
仅使用+
运算符并从L->R开始执行
“crunch”+3+1=“crunch3”+1=“crunch31”
1+3+“crunch”=4+“crunch”=“4crunch”根据您的问答
解释是
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
+是连接运算符,必须在()中使用加法运算符才能进行区分
crunch314crunch