当前位置:  开发笔记 > 编程语言 > 正文

JVM中`boolean`类型的目的是什么?

如何解决《JVM中`boolean`类型的目的是什么?》经验,为你挑选了1个好方法。

正如它所说的JVMS8:

虽然Java虚拟机定义了一个布尔类型,但它只为它提供非常有限的支持.没有Java虚拟机指令专门用于对布尔值的操作.相反,Java编程语言中对布尔值进行操作的表达式被编译为使用Java虚拟机int数据类型的值.

的确,这两种方法:

boolean expr1(boolean a, boolean b) {
    return a || b;
}

int expr2(int a, int b) {
    return ((a != 0) || (b != 0)) ? 1 : 0;
}

将生成相同的字节代码(方法签名除外)

  boolean expr1(boolean, boolean);
    Signature: (ZZ)Z
    Code:
       0: iload_1       
       1: ifne          8
       4: iload_2       
       5: ifeq          12
       8: iconst_1      
       9: goto          13
      12: iconst_0      
      13: ireturn       

  int expr2(int, int);
    Signature: (II)I
    Code:
       0: iload_1       
       1: ifne          8
       4: iload_2       
       5: ifeq          12
       8: iconst_1      
       9: goto          13
      12: iconst_0      
      13: ireturn       

所以,我不明白为什么还JVM需要boolean打字呢?仅用于方法签名的运行时检查?



1> Andremoniy..:

至少需要维护方法重载.假设我们在同一个类中有两个方法

boolean a(boolean x) {...}

boolean a(int x) {...}

它们可以具有不同的内部逻辑,因此在字节代码中,它们应该通过其签名来区分.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有