我已经学习Java 2周了。 我想知道当给定一个方法参数并且其类型为整数并且在该方法内将它与char类型进行比较时,强制转换实际上是如何工作的。
如果我将“ 1”更改为1,将“ 7”更改为7,则根本无法进行比较。 但是,如果将参数int更改为char,则会进行比较。
boolean isValid(int ch) {
if(ch < '1' | ch > '7' & ch != 'q') return false;
else return true;
}
答案 0 :(得分:1)
正如@Andy Turner所述:“ 1”与1不同。
您将使用Chararacter.getNumericValue()
看到它。这会将给定的char解析为其数字整数值。
示例:
System.out.println(Character.getNumericValue('1')); // This will print 49.
答案 1 :(得分:0)
即使将'1'
替换为1
,它也会进行比较。
条件if(ch < 1 | ch > 7 & ch != 'q')
确实得到执行。
现在的区别是,这次将字符ch
的十进制值与十进制1
和7
进行比较。之所以如此,是因为当我们将char
类型的值分配给int
类型的变量时,该ASCII字符的十进制值将被分配。
例如:如果像isValid('q')
一样调用isValid(),则在方法isValid(ch)
中,ch会得到值113
,它是ASCII字符{{1 }}。所以条件是有效的
q
,得到if(113 < 1 | 113 > 7 & ch != 'q')