0

我有以下示例代码:

int pay = 80;
int bonus = 65;
System.out.println(pay + bonus + " " + bonus + pay);

有人可以向我解释为什么我得到以下输出:

145 6580
4

9 回答 9

3

您的代码正在从左到右解释表达式。

  1. pay + bonus被解释为一个数学函数,因此它将值相加得到 145。+这里是一个加号运算符。
  2. 连接 的那一刻" ",Java 将表达式转换为字符串。这里+是一个连接运算符。
  3. 执行+ pay转换pay为字符串并将其连接起来,因为表达式是字符串。
  4. 同样由于前面的表达式,还+ bonus转换bonus为字符串并将其连接起来。
于 2013-11-06T05:37:16.227 回答
3

因为,这是operator overloading个问题。这里,First+plus运算符,last+concat运算符。

 System.out.println(pay + bonus + " " + bonus + pay);
                        |                     |
                      (plus)                (concat)
于 2013-11-06T05:33:27.667 回答
1

First it adds the two variables and at last it concatinates as string because the integers are converted into strings

For concatenation, imagine a and b are integers:

"" + a + b

This works because the + operator is overloaded if either operand is a String. It then converts the other operand to a string (if needed) and results in a new concatenated string. You could also invoke Integer.toString(a) + Integer.toString(b) for concatenation

于 2013-11-06T05:33:37.010 回答
0

bonus and pay are both ints, and therefore going to be combined into a single int result.

You need to insert an empty string between them.

于 2013-11-06T05:33:36.397 回答
0

first is plus operator and last is concat operator

于 2013-11-06T05:34:26.470 回答
0

正如其他人所说,编译器首先将整数值相加,然后打印结果,在“”之后,总值被更改为 String类型,并且在该+运算符作为连接操作之后。要获得该输出,您可以执行以下操作:

System.out.println(String.valueOf(pay) + String.valueOf(bonus) + " " + String.valueOf(bonus) + String.valueOf(pay));
于 2013-11-06T05:39:54.910 回答
0

println 中的第一个工资和奖金返回一个整数。所以它会计算 pay+bonus 并在打印出来之前将其作为整数返回。

但是,在“”之后。然后 + 操作变成了字符串的串联,之后的所有内容都作为串联的字符串返回。因此,("" + bonus + pay) 将返回为 "6580"。

于 2013-11-06T05:39:57.083 回答
0

" "之前,pay和bonus为整数,相加结果为145。在" "之后,bonus and pay为String,结果为"6580"

于 2013-11-06T05:42:12.767 回答
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
于 2013-11-06T05:54:48.133 回答