Java虚拟机_03

-XX:+TraceClassLoading,用于追踪类的加载信息并打印出来.

在ideaVMoption中配置: -XX:+TraceClassLoading,

运行主类,结果如下:

表示虚拟机,在当前类下,虚拟机加载类的信息

第一个为Object,代表加载Object类,所有类的父类.自己创建的类,首先加载main函数,代表该类主动使用.

JVM参数:

                  -XX:+<option>,表示开启option选项

                  -XX:-<option>:表示关闭option选项

                  -XX:<option>=<value>表示将option选项的值设置为value

编写MyTest2

package cn.zkun;
//
final修饰的常量在编译阶段,

//会存入到调用这个常量方法所在类的常量池中.

//本质上,调用类并没有直接引用到定义常量的类,

//因此并不会触发定义常量的类的初始化,所以没有打印静态代码块.

//注意:这里指的是将常量存放到MyTest02的常量池中,之后MyTest02//Myparent02就没有任何关系了.

//甚至,我们可以将MyParent2class文件删除
public class MyTest02 {

   
public static void main(String[] args) {
       
//Myparent2的主动使用

        //在编译阶段 这个常量就会被存入到

        //调用这个常量的方法所在的类的常量池中.
       
System.out.println(Myparent2.str);
    }
}


class Myparent2 {
   
public static final String str = "hello world";

   
static {
        System.
out.println("Myparent2 static block");
    }
}

 

str加上final之后,发现没有静态代码块打印了.这是为什么?

                   Final:代表修饰的字符是一个常量, 在编译阶段 这个常量就会被存入到

    //调用这个常量的方法所在的类的常量池中.
-----------------------------------------------------

反编译查看文件内容

E:\XcEduCode01\ShuaTi\out\production\Map\cn\zkun>javap -c MyTest02

警告: 二进制文件MyTest02包含cn.zkun.MyTest02

Compiled from "MyTest02.java"

public class cn.zkun.MyTest02 {

  public cn.zkun.MyTest02();

    Code:

       0: aload_0

       1: invokespecial #1                  // Method java/lang/Object."<i

nit>":()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: return

}

 

解析: 3: ldc  #4        // String hello world

该行代码已经成为hello world

ldc:助记符,表示将int,float或是String类型的常量值

从常量池中推送到栈顶(接下来要用的值).

改变值为short,

反编译后的结果.

 

助记符变成bipush

bipush:表示将单字节(-128-127)的常量值推送至栈顶.

添加int变量的值,编译后反编译.

助记符变成sipush:

解释sipush:表示将一个短整型常量值(-32768-32767)推送至栈顶.

助记符变化成:iconst_1

表示将int类型1推送至栈顶(改成2,3,4,5)

助记符为iconst_2

iconst_3

iconst_4

iconst_5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值