【发布时间】:2019-04-02 12:15:53
【问题描述】:
我已经学习 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;
}
【问题讨论】:
-
1与'1'不同。ch < '1'与ch < 49相同,因为 49 是'1'的代码点值。 -
@AndyTurner 这里真正有趣的问题是:解决这个问题的好 DUP 是什么?! aydinugur 建议的那个……可能不是。
-
旁注:最好在条件中使用
||和&&而不是|和&。尽管逻辑上等效,||和&&版本短路,这意味着如果仅通过计算左侧知道结果,则比较停止。这几乎总是您需要的。