1

我正在浏览我的一些朋友 Java,他目前正在睡觉。我的计算机上没有 JDK,而且我一生中从未接触过 Java。checksum int 这个表达式的值是多少?

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

5 回答 5

3

这将是'15Mesalt'

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

于 2012-04-15T11:45:01.667 回答
1

checksumin将被转换为字符串,因此 的值为15Mesalt

来自关于字符串连接的java语言规范(15.18.1) :

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

于 2012-04-15T11:44:46.673 回答
1

您正在连接字符串中的 int 。在 String 连接中将 int 转换为 String。

结果将是

15MEsalt
于 2012-04-15T11:47:04.533 回答
0

结果是15Mesalt。您的正确变量是String操作+员与操作数的联系。

于 2012-04-15T11:47:53.410 回答
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

于 2021-04-06T08:39:21.350 回答