变量String也可以接受整数值。或者我们可以用字符串连接整数吗?字符串如何接受整数?
例子:
public class TestString1 {
public static void main(String[] args) {
String str = "420";
str += 42;
System.out.print(str);
}
}
我所期待的编译错误,在这里,因为该字符串得到一个整数连接起来。
变量String也可以接受整数值。或者我们可以用字符串连接整数吗?字符串如何接受整数?
例子:
public class TestString1 {
public static void main(String[] args) {
String str = "420";
str += 42;
System.out.print(str);
}
}
我所期待的编译错误,在这里,因为该字符串得到一个整数连接起来。
将int
添加到String
将int附加到字符串,从而将int转换为字符串。
任何用双引号给出的字符串都是字符串,而+
用于将字符串与任何值(int值)连接起来。
所以整数值将被附加到字符串。 这里
String str = "420";
str += 42; // 42 will be appended to 420 and result will be 42042
JLS文档(+
) -
15.18.1 String Concatenation Operator +
如果只有一个操作数的表达是字符串类型,那么串 转换在另一个操作数执行在 运行时产生一个字符串。结果是对String对象的引用(新创建, ,除非表达式是编译时常量表达式 (第15.28)),它是两个操作数字符串的串联。左侧操作数的 字符位于新创建的字符串中右侧操作数的 字符的前面。如果 String类型的操作数为null,则字符串“null”被使用的操作数
这就是为什么字符串+ INT不产生任何错误而不是。它打印42042
没有其他答案解释了这里实际执行的内容。
您的代码将被转换为类似:
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);
X = 20 Y = 10
我显示的优先顺序低于从高至低:
乙 - 支架 O - 电源 DM - 除法和乘法 AS - 加法和减法
T他的作品从左至右如果运营商是相同的优先级的现在
的System.out.println( “打印:” + X + Y);
“打印”:是一个字符串”
“+”:是在Java中,只有重载操作,这将串联数为String。由于我们在这里有2个“+”运算符,并且x + y落在已经发生的“printing:”+之后,所以它将x和y视为字符串。
所以输出是2010
的System.out.println( “打印:” + X * Y);
这里
“*” 的优先级高于+
所以它的X * Y第一,然后打印:+
所以输出200
像这样做如果你想在第一种情况下将200作为输出:
System.out.println(“printing:”+(x + y));
括号的优先顺序高于添加。
为了便于比较,请考虑'System.out.print(“值为”+42)“。添加到字符串意味着附加到它,它意味着必要时将第二个参数转换为字符串。 – keshlam