Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在字符串值之后打印int值_Java_String_Integer_Int - Fatal编程技术网

Java 在字符串值之后打印int值

Java 在字符串值之后打印int值,java,string,integer,int,Java,String,Integer,Int,我有以下示例代码: int pay = 80; int bonus = 65; System.out.println(pay + bonus + " " + bonus + pay); 有人能给我解释一下为什么我会得到以下输出: 145 6580 因为,这是运算符重载问题。这里,First+是加号运算符,last+是concat运算符 System.out.println(pay + bonus + " " + bonus + pay); |

我有以下示例代码:

int pay = 80;
int bonus = 65;
System.out.println(pay + bonus + " " + bonus + pay);
有人能给我解释一下为什么我会得到以下输出:

145 6580
因为,这是运算符重载问题。这里,First+是加号运算符,last+是concat运算符

 System.out.println(pay + bonus + " " + bonus + pay);
                        |                     |
                      (plus)                (concat)
奖金和薪酬都是整数,因此将合并为一个整数结果


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

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

对于串联,假设a和b是整数:

"" + a + b

这是因为如果任一操作数是字符串,则+运算符重载。然后,如果需要,它将另一个操作数转换为字符串,并生成一个新的连接字符串。您还可以调用Integer.toStringa+Integer.toStringb进行串联

首先是加号运算符,最后是concat运算符

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

pay+红利被解释为一个数学函数,因此它将这些值相加,使之成为145。这里的+是一个加号运算符。 连接表达式时,Java会将表达式转换为字符串。这里的+是一个连接运算符。 因为表达式是字符串,所以执行+pay将pay转换为字符串并将其连接起来。 同样由于前面的表达式,doing+bonus将bonus转换为字符串并连接它。
正如其他人所说,编译器首先添加整数值,然后在总值更改为字符串类型后打印结果,然后+运算符作为concat操作运行。要不获取该输出,可以执行以下操作:

System.out.println(String.valueOf(pay) + String.valueOf(bonus) + " " + String.valueOf(bonus) + String.valueOf(pay));

println中的第一个薪酬和奖金返回一个整数。因此,它计算pay+奖金,并在打印之前将其作为整数返回


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

之前,pay和bonus为整数,添加的结果为145。
在“奖金”和“支付方式”字符串之后,结果是6580

所包围的内容被称为“文字打印”,并精确打印出来。加号是连接运算符,它将字符串与存储在变量中的值连接起来。pay和bonus声明为int,但会自动转换为字符串以便打印输出

可以在System.out.print语句中打印算术表达式。在算术表达式周围使用括号以避免意外问题

        System.out.println("ex" + 3 + 4);   // becomes answer 34
        System.out.println("ex" + (3 + 4));   // becomes answer 7

您键入String.valueOfvar吗?我总是做+var;速度快得多。对于特定的示例,我通常执行System.out.printlnpay++bonus++bonus++pay@梅花形:您所做的将使编译器实例化一个值为的新字符串对象,因此它将比值为慢得多。@user2959072,我很高兴您得到了所需的信息。我强烈建议您在可能的情况下选择答案:如果我知道怎么做,我会的。对所有这些仍然陌生。@user2959072,每个答案旁边都应该有一个复选标记图标,让您选择一个答案。如果没有,那就不管了!哈哈。