在String值后面打印一个int值

时间:2013-11-06 05:31:41

标签: java string integer int

我有以下示例代码:

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

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

145 6580

9 个答案:

答案 0 :(得分:3)

因为,这是operator overloading问题。此处,第一个+plus运算符,最后一个+concat运算符。

 System.out.println(pay + bonus + " " + bonus + pay);
                        |                     |
                      (plus)                (concat)

答案 1 :(得分:3)

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

  1. pay + bonus被解释为数学函数,因此它将值添加到145. +这里是加号运算符。
  2. 当您连接" "时,Java会将表达式转换为String。 +这里是一个连接运算符。
  3. 执行+ paypay转换为字符串并连接它,因为表达式是字符串。
  4. 同样做+ bonusbonus转换为String并连接它,也是因为前一个表达式。

答案 2 :(得分:1)

首先它添加了两个变量,最后它变为字符串,因为整数被转换为字符串

对于连接,假设a和b是整数:

"" + a + b

这是有效的,因为如果任一操作数是String,则+运算符会被重载。然后它将另一个操作数转换为字符串(如果需要)并生成一个新的连接字符串。您也可以调用Integer.toString(a) + Integer.toString(b)进行连接

答案 3 :(得分:0)

bonuspay都是整数,因此将合并为一个整数结果。

您需要在它们之间插入一个空字符串。

答案 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