我有以下示例代码:
int pay = 80;
int bonus = 65;
System.out.println(pay + bonus + " " + bonus + pay);
有人可以向我解释为什么我得到以下输出:
145 6580
答案 0 :(得分:3)
因为,这是operator overloading
问题。此处,第一个+
是plus
运算符,最后一个+
是concat
运算符。
System.out.println(pay + bonus + " " + bonus + pay);
| |
(plus) (concat)
答案 1 :(得分:3)
您的代码是从左到右解释表达式。
pay + bonus
被解释为数学函数,因此它将值添加到145. +
这里是加号运算符。" "
时,Java会将表达式转换为String。 +
这里是一个连接运算符。+ pay
将pay
转换为字符串并连接它,因为表达式是字符串。+ bonus
将bonus
转换为String并连接它,也是因为前一个表达式。答案 2 :(得分:1)
首先它添加了两个变量,最后它变为字符串,因为整数被转换为字符串
对于连接,假设a和b是整数:
"" + a + b
这是有效的,因为如果任一操作数是String,则+运算符会被重载。然后它将另一个操作数转换为字符串(如果需要)并生成一个新的连接字符串。您也可以调用Integer.toString(a) + Integer.toString(b)
进行连接
答案 3 :(得分:0)
bonus
和pay
都是整数,因此将合并为一个整数结果。
您需要在它们之间插入一个空字符串。
答案 4 :(得分:0)
首先是plus operator
,最后是concat operator
答案 5 :(得分:0)
正如其他人所说,编译器首先添加整数值,然后打印结果,在“”之后,总值变为String
类型,之后+
运算符作为联合行动。要获得该输出,您可以这样做:
System.out.println(String.valueOf(pay) + String.valueOf(bonus) + " " + String.valueOf(bonus) + String.valueOf(pay));
答案 6 :(得分:0)
println中的第一笔薪水和奖金返回一个整数。因此,它计算付费+奖金并在打印之前将其作为整数返回。
然而,在“”之后。然后+操作成为字符串的串联,之后的所有内容都作为连接字符串返回。因此,(“”+ +奖金+支付)将返回为“6580”。
答案 7 :(得分:0)
在“”之前,支付和奖金为整数,添加结果为145。 在“”,奖金和支付为字符串之后,结果是“6580”
答案 8 :(得分:0)
被“”包围的内容被称为“文字印刷”并被精确打印。 “+”符号是连接符运算符,并将字符串与存储在变量中的值连接起来。 pay和bonus声明为int,但会自动转换为String以便打印出来。
您可以在System.out.print语句中打印算术表达式。在算术表达式周围使用括号以避免意外问题。
System.out.println("ex" + 3 + 4); // becomes answer 34
System.out.println("ex" + (3 + 4)); // becomes answer 7