And*_*hez 1 java programming-languages
在论坛的另一天,我对原始的布尔数据类型进行了讨论.有一个人说,ALL语言true内部(或本地)被视为-1.这是真的吗?
PD:我们特别谈论Java
Jon*_*eet 11
这实际上是JVM规范的一部分,至少在某些方面 - 并且它不是 -1.规范的第3.3.4节有这样的说法:
虽然Java虚拟机定义了一个布尔类型,但它只提供非常有限的支持.没有专门针对布尔值操作的Java虚拟机指令.相反,Java编程语言中对布尔值进行操作的表达式被编译为使用Java虚拟机int数据类型的值.
Java虚拟机直接支持布尔数组.它的newarray指令可以创建布尔数组.使用字节数组指令baload和bastore.2访问和修改boolean类型的数组
Java虚拟机使用1表示布尔数组组件以表示true,使用0表示false.其中Java编程语言布尔值由编译器映射到Java虚拟机类型int的值,编译器必须使用相同的编码.
作为一个例子:
public static boolean returnFalse() {
return false;
}
public static boolean returnTrue() {
return true;
}
Run Code Online (Sandbox Code Playgroud)
编译为:
public static boolean returnFalse();
Code:
0: iconst_0
1: ireturn
public static boolean returnTrue();
Code:
0: iconst_1
1: ireturn
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
794 次 |
| 最近记录: |