[英]How can a string accept an integer?
变量String也可以接受整数值。 或者我们可以用字符串连接整数?
例:
public class TestString1 {
public static void main(String[] args) {
String str = "420";
str += 42;
System.out.print(str);
}
}
我期待编译错误,因为String正在与一个整数连接。
字符串连接运算符( +
)上的JLS文档 -
如果只有一个操作数表达式是String类型,则在另一个操作数上执行字符串转换以在运行时生成字符串。 结果是对String对象的引用(新创建,除非表达式是编译时常量表达式(第15.28节)),它是两个操作数字符串的串联。 左侧操作数的字符位于新创建的字符串中右侧操作数的字符之前。 如果String类型的操作数为null,则使用字符串“null”而不是该操作数
这就是String + 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);
将int
添加到String
会将int附加到字符串,从而将int转换为字符串。
双引号中给出的任何内容都是String, +
用于将字符串与任意值(int值)连接。
因此整数值将附加到字符串。 这里
String str = "420";
str += 42; // 42 will be appended to 420 and result will be 42042
x = 20 y = 10
我在下面从高到低显示优先顺序:
B - 支架O - 功率DM - 分频和乘法AS - 加法和减法
如果运算符具有相同的优先级,则从左到右工作
现在
System.out.println(“printing:”+ x + y);
“打印:”:是一个字符串“
“+”:是Java中唯一一个将Number连接到String的重载运算符。 由于我们在这里有2个“+”运算符,并且x + y在“打印:”+之后已经发生了,因此它将x和y视为字符串。
所以产量是2010年。
System.out.println(“printing:”+ x * y);
在这里
“*”:优先级高于+
所以它的x * y首先打印:+
所以输出是200
如果你想在第一种情况下输出200作为这样做:
System.out.println(“printing:”+(x + y));
Bracket的优先顺序高于Addition。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.