【问题标题】: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 = 51,3 + '0' 也是。
所以'3' + '0' 表示51 + 48 = 99。