我正在浏览一些朋友Java,他现在正在睡觉。我的计算机上没有JDK,而且我的生活中从未接触过Java。这个表达式中校验和的值是什么?
int score = 15;
String name = "Me";
String checksum = score + name + "salt";
//do stuff
答案 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
。