Java 字符串连接给出的输出为 2 等于 11 on concat 1+1+"equals"+1+1
Java String Concatenation giving output as 2 equals 11 on concat 1+1+"equals"+1+1
我在 java 中编写代码并得到输出 2 equals 11
。我的代码是
public class StringPrct
{
public static void main(String[]args)
{
String s= 1+1+" equals "+1 +1;
System.out.println(s);
}
}
现在的问题是为什么我没有得到 2 equals 2
的输出。
将数字添加到字符串得到一个字符串。 1+1 是 2,因为你将一个 int 添加到 int 2 + “equals”是字符串,之后的任何东西都将被连接起来。
在一个字符串之后,Java 显然看到其他连接的参数需要对它们调用 toString() 。如果您通过将操作放在括号中来给 Java 一个关于运算符顺序的提示,您将获得正确的输出:
String s= (1+1) +" equals "+ (1 +1);
+
运算符有 same precedence whether it's addition or concatenation,并从左到右关联。所以:
1 + 1 + " equals " + 1 + 1
评估为
(((1 + 1) + " equals ") + 1) + 1
((2 + " equals ") + 1) + 1
("2 equals " + 1) + 1
"2 equals 1" + 1
"2 equals 11"
如果你想覆盖它,你需要提供括号:
1 + 1 + " equals " + (1 + 1)
这变成:
((1 + 1) + " equals ") + (1 + 1)
(2 + " equals ") + (1 + 1)
"2 equals " + (1 + 1)
"2 equals " + 2
"2 equals 2"
为清楚起见,您可能还应该将括号添加到第一个 1 + 1
,这样阅读您的代码的人就不必进行添加括号和向下求值的脑力练习:
(1 + 1) + " equals " + (1 + 1)
1 + 1
是整数(2
)
2 + " equals "
转换为 String(2 equals
)
"2 equals " + 1
是字符串(2 equals 1
)
"2 equals 1" + 1
是字符串(2 equals 11
)
应该是(1 + 1) + " equals " + (1 + 1)
我在 java 中编写代码并得到输出 2 equals 11
。我的代码是
public class StringPrct
{
public static void main(String[]args)
{
String s= 1+1+" equals "+1 +1;
System.out.println(s);
}
}
现在的问题是为什么我没有得到 2 equals 2
的输出。
将数字添加到字符串得到一个字符串。 1+1 是 2,因为你将一个 int 添加到 int 2 + “equals”是字符串,之后的任何东西都将被连接起来。
在一个字符串之后,Java 显然看到其他连接的参数需要对它们调用 toString() 。如果您通过将操作放在括号中来给 Java 一个关于运算符顺序的提示,您将获得正确的输出:
String s= (1+1) +" equals "+ (1 +1);
+
运算符有 same precedence whether it's addition or concatenation,并从左到右关联。所以:
1 + 1 + " equals " + 1 + 1
评估为
(((1 + 1) + " equals ") + 1) + 1
((2 + " equals ") + 1) + 1
("2 equals " + 1) + 1
"2 equals 1" + 1
"2 equals 11"
如果你想覆盖它,你需要提供括号:
1 + 1 + " equals " + (1 + 1)
这变成:
((1 + 1) + " equals ") + (1 + 1)
(2 + " equals ") + (1 + 1)
"2 equals " + (1 + 1)
"2 equals " + 2
"2 equals 2"
为清楚起见,您可能还应该将括号添加到第一个 1 + 1
,这样阅读您的代码的人就不必进行添加括号和向下求值的脑力练习:
(1 + 1) + " equals " + (1 + 1)
1 + 1
是整数(2
)
2 + " equals "
转换为 String(2 equals
)
"2 equals " + 1
是字符串(2 equals 1
)
"2 equals 1" + 1
是字符串(2 equals 11
)
应该是(1 + 1) + " equals " + (1 + 1)