JVM 基础变量

  • java基本变量值范围
  • 这里写图片描述
    • asm 操作字节码示例
public class Foo {
 static  boolean boolValue;
public static void main(String[] args){
boolValue=true;
if(boolValue) System.out.println("Hello,Java!");
if(boolValue==true)System.out.println("Hello,JVM!");
}
}

$ java -cp /pt/java/asmtools.jar  org.openjdk.asmtools.jdis.Main Foo.class > Foo.jasm.1
// 将class 文件转译为jasm文件
$ awk 'NR==1,/iconst_1/{sub(/iconst_1/, "iconst_2")} 1' Foo.jasm.1 > Foo.jasm
// NR==1 代表从第一行开始搜索, iconst 是jvm指令,即给常量赋值。iconst_1 即代表常量值为1,_2 代表为2 
//上述命令的意思就是 从Foo.jasm.1 搜索到第一个iconst_1将其替换为iconst_2 生成Foo.jasm文件。
$ java -jar /pt/java/asmtools-7.0-build/release/lib/asmtools.jar jasm Foo.jasm
// 使用Foo.jasm 重新编译Foo类。
$ java Foo
  • boolean 类型,在虚拟机里Boolean类型true为1,false为0,如果数值转换为true,将进行掩码操作,即取数值的最后一位,比如2为0,3为1。
  • 从低到高,值范围依次扩大,默认值在内存中都是0。

猜你喜欢

转载自blog.csdn.net/m0_37948170/article/details/81810526