我正在浏览我的一些朋友 Java,他目前正在睡觉。我的计算机上没有 JDK,而且我一生中从未接触过 Java。checksum int 这个表达式的值是多少?
int score = 15;
String name = "Me";
String checksum = score + name + "salt";
//do stuff
我正在浏览我的一些朋友 Java,他目前正在睡觉。我的计算机上没有 JDK,而且我一生中从未接触过 Java。checksum int 这个表达式的值是多少?
int score = 15;
String name = "Me";
String checksum = score + name + "salt";
//do stuff
这将是'15Mesalt'
它只是将整数作为数字添加到字符串中,没有多余的装饰,没有什么真正花哨的东西。
checksumin将被转换为字符串,因此 的值为15Mesalt。
来自关于字符串连接的java语言规范(15.18.1) :
如果只有一个操作数表达式是字符串类型,则对另一个操作数执行字符串转换以在运行时生成字符串。
您正在连接字符串中的 int 。在 String 连接中将 int 转换为 String。
结果将是
15MEsalt
结果是15Mesalt。您的正确变量是String操作+员与操作数的联系。
运算符在语法上+ 是左结合的,无论是通过类型分析确定是表示字符串连接还是数值加法。如果一个运算符的任一操作数的类型+是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。