以Java输出(System.out.println())

时间:2018-08-09 14:33:27

标签: java string char int output

在Java中:

System.out.println('c' + "Hello world" + 1);

给予

cHello world1

但是

System.out.println('c' + 1 + "Hello world");   

给予

100Hello world

即c转换为它的ASCII字符Java对此使用了什么规则?有人可以告诉我我可以遵循的一组规则来预测输出,因为这对我来说已经很混乱了。

2 个答案:

答案 0 :(得分:3)

仅当左侧为+时,String运算符才成为字符串连接运算符。否则,根据docs,它仍然是加法运算符。

在您的示例中,'c'是一个字符文字,在添加过程中将其提升为int。请注意,c是99,而不是您的示例中的119,因此输出是100Hello world

答案 1 :(得分:2)

因为Java中的char扮演两个角色,当您将它与字符串连接时,它扮演一个字符串的角色,而当您将其与另一个数字值相加时,扮演第二个角色。

所以在您的情况下:

System.out.println('c' + 1 + "Hello world");

等同于:

System.out.println(('c' + 1) + "Hello world");
                   ^       ^

'c'将其转换为99的地方:

System.out.println((99 + 1) + "Hello world");
                   ^^^    ^ 

为此,您得到:

100Hello world