【问题标题】:Output in java (System.out.println())java 中的输出 (System.out.println())
【发布时间】:2018-08-09 14:33:26
【问题描述】:

在 Java 中:

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

给了

cHello world1

但是

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

给予

100Hello world

即 c 被转换为它的 ASCII 字符。Java 对此使用什么规则?谁能告诉我我可以遵循的一组规则来预测输出,因为这对我来说非常混乱。

【问题讨论】:

  • 如果你在一个字符串中添加一些东西,它会连接起来。这是+ 唯一一次连接。如果将 char 添加到 int,它会以数字形式添加它们。
  • 不可能。你可以得到100,而不是120
  • 嗯,不是 ASCII,而是 UTF-16(它是 Unicode 字符集的几种字符编码之一)。 Java 不使用 ASCII。

标签: java string char int output


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    因为char 在 Java 中扮演两个角色,一个是当你将它与一个字符串连接时作为一个字符串,另一个是当你将它与另一个数值相加时作为一个 int。

    所以在你的情况下:

    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
    

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 2011-10-04
      • 2015-07-31
      相关资源
      最近更新 更多