在Java中向int添加字符串时会得到什么?

时间:2012-04-15 11:43:00

标签: java

我正在浏览一些朋友Java,他现在正在睡觉。我的计算机上没有JDK,而且我的生活中从未接触过Java。这个表达式中校验和的值是什么?

int score = 15;
String name = "Me";
String checksum = score + name + "salt";
//do stuff

5 个答案:

答案 0 :(得分:4)

这将是'15Mesalt'

它只是将整数添加到字符串中作为数字,没有多余的装饰,没有什么真正的花哨。

答案 1 :(得分:1)

in将转换为字符串,因此checksum的值为15Mesalt

来自字符串连接的java Language Specification (15.18.1)

  

如果只有一个操作数表达式是String类型,则在另一个操作数上执行字符串转换以在运行时生成字符串。

答案 2 :(得分:1)

您在字符串中连接int。在String concatenation int转换为String。

,结果将是

15MEsalt

答案 3 :(得分:0)

结果是15Mesalt。您的正确变量为String,因此+运算符与操作数联系。

答案 4 :(得分:0)

+ 运算符在语法上是左结合的,无论是通过类型分析确定表示字符串连接还是数字加法。如果 + 运算符的任一操作数的类型为 String,那么操作就是字符串拼接。

所以表达式的结果 score + name + "salt" ="15Mesalt";

这是另一个场景:

System.out.println("Hello" + 'a' + 7); System.out.println('a' + 7 + "Hello");

第一个输出是Helloa7,第二个是104Hello。在第一条语句中,两个+运算符都表示字符串连接。

但是对于第二个,由于 + 运算符在语法上是左结合的,所以 'a'+7 首先被评估。现在它触发了 java 自动类型提升机制,将 'a' 转换为其对应的 ASCII值97并将其添加到7。所以结果是104,这是一个int值。然后评估104 + "Hello" 。由于第二个操作数是一个字符串, + 运算符现在表示字符串连接。所以结果是 104Hello