变量String也可以接受整数值。或者我们可以用字符串连接整数?
示例:
public class TestString1 {
public static void main(String[] args) {
String str = "420";
str += 42;
System.out.print(str);
}
}
我期待编译错误,因为String正在与整数连接。
答案 0 :(得分:2)
关于字符串连接运算符(+
)的JLS文档 -
15.18.1 String Concatenation Operator +
如果只有一个操作数表达式是String类型,则为string 在另一个操作数上执行转换以生成一个字符串 运行。结果是对String对象的引用(新创建的, 除非表达式是编译时常量表达式 (§15.28))这是两个操作数字符串的串联。该 左侧操作数的字符在字符之前 新创建的字符串中的右侧操作数。如果是类型的操作数 String为null,然后使用字符串“null”而不是该操作数
这就是String + int不会产生任何错误的原因。并打印42042
答案 1 :(得分:1)
其他答案都没有解释这里实际执行的内容。
您的代码将转换为:
String str = "420";
// str += 42;
StringBuilder sb = new StringBuilder(str);
sb.append(42); // which internally does something similar to String.valueOf()
str = sb.toString();
System.out.print(str);
答案 2 :(得分:0)
将int
添加到String
会将int附加到字符串,从而将int转换为字符串。
答案 3 :(得分:0)
双引号中给出的任何内容都是String,+
用于连接任意值(int值)的字符串。
因此整数值将附加到字符串。
这里
String str = "420";
str += 42; // 42 will be appended to 420 and result will be 42042
答案 4 :(得分:0)
x = 20 y = 10
我在下面从高到低显示优先顺序:
B - 支架 O - 电力 DM - 划分和乘法 AS - 添加和减少
如果运算符具有相同的优先级,则从左到右工作
现在
System.out.println(“printing:”+ x + y);
“打印:”:是字符串“
“+”:是Java中唯一一个将Number连接到String的重载运算符。由于我们在这里有2个“+”运算符,并且x + y在“print:”+之后已经发生了,因此它将x和y视为字符串。
所以输出是2010年。
System.out.println(“printing:”+ x * y);
这里
“*”:优先级高于+
首先是x * y然后打印:+
所以输出是200
如果在第一种情况下需要200作为输出,请执行此操作:
System.out.println(“printing:”+(x + y));
Bracket的优先顺序高于Addition。