myidentity 2010-12-31 08:35
浏览 409
已采纳

为啥判断boolean值的时候用 value == false 的形式而不直接取反

我看到很多第三方开源代码中都有下面类似的代码:
1.public static boolean isNumeric(String str) {

2. if (str == null) {

3. return false;

4. }

5. int sz = str.length();

6. for (int i = 0; i < sz; i++) {

7. if (Character.isDigit(str.charAt(i)) == false) {

8. return false;

9. }

10. }

11. return true;

12. }

我想问的就是 if (Character.isDigit(str.charAt(i)) == false), 为什么很多代码判断 true 还是 false的时候都用 "== false" 的形式,而不写成 if (!Character.isDigit(str.charAt(i))) {...} 的形式,两者具体有什么区别?

  • 写回答

9条回答 默认 最新

  • beneo 2010-12-31 08:44
    关注

    java代码是有compile变成class,然后在jvm里面运行的
    [code="java"]
    public class CompileDemo {

    public void demo() {
        if (isDigit() == false) {
    
        }
    }
    
    public void demo2() {
        if (!isDigit()) {
    
        }
    }
    
    public boolean isDigit() {
        return true;
    }
    

    }
    [/code]

    编译以后,用javap -l -s -v CompileDemo,可以看出

    [code="java"]
    public void demo();

    Code:
    Stack=1, Locals=1, Args_size=1
    0: aload_0
    1: invokevirtual #2; //Method isDigit:()Z
    4: ifne 7
    7: return

    public void demo2();

    Code:
    Stack=1, Locals=1, Args_size=1
    0: aload_0
    1: invokevirtual #2; //Method isDigit:()Z
    4: ifne 7
    7: return
    [/code]

    这2个方法其实是一模一样的。

    (Character.isDigit(str.charAt(i)) == false)与(!Character.isDigit(str.charAt(i)))就是代码可读性的问题了。。。我自己也觉得前者更易读一些

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘