我正在读考试,并想知道为什么跟随'数字'代码语句导致一个完全不同的数字。
public class HelloWorld{
public static void main(String []args){
System.out.println('1' + 1); // prints 50
System.out.println('2' + 1); // prints 51
System.out.println('2'); // prints 2
}
}
答案 0 :(得分:7)
当您说'1'
并添加1
时,在添加(binary numeric promotion)之前,这些值会提升为int
。 1
has the ASCII value 49
,因此49 + 1 = 50,2
的ASCII值为50
,因此50 + 1 = 51。
但是,如果您不添加,则会调用println
method that takes a char
,并打印'2'
。
答案 1 :(得分:2)
1的ASCII值为49,因此在执行System.out.println('1' + 1);
时,首先将char '1'
转换为其ASCII值(49),然后添加1,结果为50。
在最后一个示例中,没有添加,因此字符不会转换为其整数表示。
同样,您可以添加'f'
和1
:
System.out.println('f' + 1); // prints: 103
答案 2 :(得分:0)
System.out.println('1'+ 1);
Java将看到算术运算并尝试打印该操作的结果。因此,Java会将char '1'
转换为ASCII码值49,49 + 1 = 50,因此它打印“50”
<强>的System.out.println( '2'); 强>
此处没有算术,所以只打印char
答案 3 :(得分:0)
首先'2'+1
等于51,而不是50。
单一数字内的数字表示为ascii值,而不是实数。 ascii为1为49,49和1等于50.检查ascii代码here
答案 4 :(得分:0)
除了以上所有答案。
键入 System.out.println('2');
时//它只打印字符串2。
有关详细的ascii值,请参阅http://www.newebgroup.com/academy/tables/ascii.htm。
答案 5 :(得分:0)
当您使用单引号'1'
时,Java会将其解析为char
类型。当您对具有int
的char类型执行操作时,Java将获取该char的十进制值并将其用于操作。使用ASCII Table,您可以看到'1'
的ascii值为49
(而'2'
为50
),因此添加1
即可{分别为{1}}和50
。然后,51
会打印出System.out.println
结果。
当您使用int
时,它会打印出System.out.println('2')
ascii值,这就是您获得char
的原因。
答案 6 :(得分:0)
答案 7 :(得分:0)
System.out.println('1' + 1); // prints 50
System.out.println('2' + 1); // prints 51
System.out.println('2'); // prints 2
在解析参数时,它将假定整个表达式应为int
类型。因此,它会将char
'1'
转换为其ASCHII值(int
值),即49
。
因此49 + 1 = 50
。
同样,'2' == 50
所以50 + 1 = 51
。
但是,当您仅将'2'
作为参数传递时,它只会按原样打印char
,因为它没有理由被解析为int
,就像在其他情况。