本文共 3230 字,大约阅读时间需要 10 分钟。
/* * Copyright (c) 2019 maoyan.com * All rights reserved. * *//** * JVM 初始化 * * -XX:+TraceClassLoading,用于追踪类的加载信息并打印出来 * -XX:+
[Loaded MyParent from file:/Users/wangkai/IdeaProjects/JvmTest/out/production/JvmTest/][Loaded MyChild from file:/Users/wangkai/IdeaProjects/JvmTest/out/production/JvmTest/]my parent static blockwangkai
/* * Copyright (c) 2019 maoyan.com * All rights reserved. * *//** * 常量在编译阶段会存入到调用这个常量的方法所在的类的常量池中 * 本质上,调用类并没有直接引用到定义常量的类,因此不会触发 * 定义常量池类的初始化 * 注意:这里指的是将常量放到MyTest1的常量池中 * * @author wangkai * @created 2019/12/27 */public class MyTest1 { public static void main(String[] args) { // 助记符:ldc表示将int,float或者是String类型的常量值从常量池中推送至栈顶 System.out.println(MyParent1.str); // 助记符:bipush表示将单字节(-128~127)常量值从常量池中推送至栈顶 System.out.println(MyParent1.s); // 助记符:sipush表示将短整型常量值(-32768~32767)常量值从常量池中推送至栈顶 System.out.println(MyParent1.i); // 助记符:iconst_1表示将int类型1推送至栈顶(iconst_m1-iconst_5) System.out.println(MyParent1.m); }}class MyParent1{ public static final String str="hello world"; public static final short s=127; public static final int i=129; public static final int m=2; static { System.out.println("static my parent1"); }}
注:编译之后,可以把MyParent1的class文件删除,也不会对结果有影响
助记符:ldc表示将int,float或者是String类型的常量值从常量池中推送至栈顶
助记符:bipush表示将单字节(-128~127)常量值从常量池中推送至栈顶 助记符:sipush表示将短整型常量值(-32768~32767)常量值从常量池中推送至栈顶 助记符:iconst_1表示将int类型1推送至栈顶(iconst_m1-iconst_5)Compiled from "MyTest1.java"public class MyTest1 { public MyTest1(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."":()V 4: return public static void main(java.lang.String[]); Code: 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #4 // String hello world 5: invokevirtual #5 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 11: bipush 127 13: invokevirtual #6 // Method java/io/PrintStream.println:(I)V 16: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 19: sipush 129 22: invokevirtual #6 // Method java/io/PrintStream.println:(I)V 25: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 28: iconst_2 29: invokevirtual #6 // Method java/io/PrintStream.println:(I)V 32: return}
转载地址:http://pobjn.baihongyu.com/