【问题标题】:System.out.println( '3' + 0 );System.out.println('3' + 0);
【发布时间】:2015-01-27 03:51:09
【问题描述】:

所以如果你运行上面的语句System.out.println( '3' + 0 );

你得到 51 作为输出。

如果你运行另一个类似的语句,

System.out.println(  3  + '0' );

你得到相同的结果,即 51。

但是,如果你运行第三条语句,

System.out.println( '3' + '0' )

然后你得到 99 作为结果。

谁能解释这三个结果背后究竟发生了什么?

【问题讨论】:

    标签: java char int system.out


    【解决方案1】:

    当您将 0 之类的数字放入“”中时,您将返回 0 的 ASCII/unicode 值,在这种情况下为 48,这就是为什么当您将 3 添加到“0”时会得到 51。

    【讨论】:

      【解决方案2】:

      因为这个:

      char c = '0';
      int ascii = (int) c; // ASCII of '0' is 48
      System.out.println( 3 + ascii);
      

      【讨论】:

        【解决方案3】:

        '3' 的 ascii 码是 51。当你给它加上一个整数 0 时,结果是 51 并被打印出来。同样,'0' 的 ascii 代码是 48 并且您正在向其添加 3...但是当您以 ascii 格式添加 '3' 和 '0' 时,它会添加 48 和 51,因此输出为 99。发生这种情况是因为java中的隐式类型转换。

        【讨论】:

          【解决方案4】:

          当您使用 System.out.println( '3' + 0 );System.out.println( 3 + '0' ); 这是一个类型开关,char 0 menas int 48,所以'3' + 0 表示51 + 0 = 513 + '0' 也是。

          所以'3' + '0' 表示51 + 48 = 99

          【讨论】:

            猜你喜欢
            • 2013-07-08
            • 2023-01-22
            • 2017-05-25
            • 2012-05-16
            • 1970-01-01
            • 2013-07-15
            • 1970-01-01
            • 2011-04-29
            • 2013-01-20
            相关资源
            最近更新 更多