我正在浏览我的一些朋友 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'
它只是将整数作为数字添加到字符串中,没有多余的装饰,没有什么真正花哨的东西。
checksum
in将被转换为字符串,因此 的值为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
。