好吧,其实很多看代码的方法是书上没有的,我记一下方法。

方法

vim Test.java

public final class Test{public static final String  s1 = "hello";public static void main(String[] args){System.out.println(s1);}
}

javac Test.java

javap -c -v Test.class

Classfile /Users/yeshen/Documents/yeshen/temp/Test.classLast modified Aug 1, 2017; size 465 bytesMD5 checksum 7f091d406dbf33427c3f71e331e14ca2Compiled from "Test.java"
public final class Testminor version: 0major version: 52flags: ACC_PUBLIC, ACC_FINAL, ACC_SUPER
Constant pool:#1 = Methodref          #6.#18         // java/lang/Object."<init>":()V#2 = Fieldref           #19.#20        // java/lang/System.out:Ljava/io/PrintStream;#3 = Class              #21            // Test#4 = String             #22            // hello#5 = Methodref          #23.#24        // java/io/PrintStream.println:(Ljava/lang/String;)V#6 = Class              #25            // java/lang/Object#7 = Utf8               s1#8 = Utf8               Ljava/lang/String;#9 = Utf8               ConstantValue#10 = Utf8               <init>#11 = Utf8               ()V#12 = Utf8               Code#13 = Utf8               LineNumberTable#14 = Utf8               main#15 = Utf8               ([Ljava/lang/String;)V#16 = Utf8               SourceFile#17 = Utf8               Test.java#18 = NameAndType        #10:#11        // "<init>":()V#19 = Class              #26            // java/lang/System#20 = NameAndType        #27:#28        // out:Ljava/io/PrintStream;#21 = Utf8               Test#22 = Utf8               hello#23 = Class              #29            // java/io/PrintStream#24 = NameAndType        #30:#31        // println:(Ljava/lang/String;)V#25 = Utf8               java/lang/Object#26 = Utf8               java/lang/System#27 = Utf8               out#28 = Utf8               Ljava/io/PrintStream;#29 = Utf8               java/io/PrintStream#30 = Utf8               println#31 = Utf8               (Ljava/lang/String;)V
{public static final java.lang.String s1;descriptor: Ljava/lang/String;flags: ACC_PUBLIC, ACC_STATIC, ACC_FINALConstantValue: String hellopublic Test();descriptor: ()Vflags: ACC_PUBLICCode:stack=1, locals=1, args_size=10: aload_01: invokespecial #1                  // Method java/lang/Object."<init>":()V4: returnLineNumberTable:line 1: 0public static void main(java.lang.String[]);descriptor: ([Ljava/lang/String;)Vflags: ACC_PUBLIC, ACC_STATICCode:stack=2, locals=1, args_size=10: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;3: ldc           #4                  // String hello5: invokevirtual #5                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V8: returnLineNumberTable:line 4: 0line 5: 8
}
SourceFile: "Test.java"

run

java Test

结论:

这样弄了之后,代码从初始化到具象执行的过程都透明可见了。

java代码从初始化到具象执行相关推荐

  1. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  2. java 获取内存大小_JVM面试题扩展:Java代码在JVM中的执行流程

    代码示例: public class Test { // 常量 public static final String MAN_SEX_TYPE = "man"; // 静态变量 p ...

  3. java构造函数的执行顺序,java构造函数和初始化函数的执行顺序

    1,静态变量.静态代码块.变量.普通代码块.mian方法.构造函数的执行顺序是:(静态变量.静态代码块)>    main方法 >(变量.普通代码块)>构造函数. 2,如果子类调用了 ...

  4. java自动获取时间 月代码_【java代码获取系统时间和执行定时任务】

    获取系统时间 主要类简介 SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类.它允许进行格式化(日期 -> 文本).解析(文本 -> 日期)和规范化. ...

  5. java JLabel改变大小后如何刷新_到底一行java代码是如何在计算机上执行的

    不知道你是否思考过,每次我们在IDEA中右键Run Application启动主方法,假如程序运行正常,控制台也打印出了你所要打印的信息,在这个过程中你知道这台计算机上那些硬件及其软件都是以什么样的方 ...

  6. java 调用wget_通过命令行执行WGET下载会更快,而通过Java代码执行时会更慢

    我正在使用WGET通过java代码下载文件,这需要大约10分钟才能下载20 MB文件.但是通过命令行执行wget下载,同样的文件以10MbPs的速度在7秒内下载.有人知道为什么吗?我该如何改进我的Ja ...

  7. pmd java_用PMD自动执行Java代码静态分析

    一起学习 一.基础知识 PMD是一种分析Java代码错误的工具.与其他分析工具不同的是,PMD通过静态分析获知代码错误.也就是说,在不运行Java程序的情况下报告错误.PMD附带了许多可以直接使用的规 ...

  8. java 虚拟机 字节码,JAVA虚拟机:虚拟机字节码执行引擎

    "虚拟机"是一个相对"物理机"的概念,这两种机器都有代码执行能力. 物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上的. 虚拟机的执行引擎由自己 ...

  9. 智能合约转java_第四章 自定义sol合约转化java代码,并实现调用

    鉴于笔者以前各大博客教程都有很多人提问,早期建立一个技术交流群,里面技术体系可能比较杂,想了解相关区块链开发,技术提问,请加QQ群:538327407 准备工作 1.官方参考说明文档 2.已经在ubu ...

  10. java调用类中的静态变量时类中静态代码块什么情况会执行以及类的初始化问题?

    类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段. 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Jav ...

最新文章

  1. 一个有关程序运行时间的小测试
  2. expect switch 多条件_JavaScript-流程控制语句:选择结构(if和switch)
  3. 存储器芯片巨头动态观察:三星、美光、SK海力士都在做什么?
  4. 构建高性能ASP.NET站点之二 优化HTTP请求(前端)
  5. 论文插入参考文献神器——EndNote(包括EndNoteX9安装和破解)
  6. 端口映射抖音去水印工具网页源码
  7. Push rejected: Push to origin/test was rejected
  8. 20165107 网络对抗技术 Exp4 恶意代码分析
  9. 绘制中国象棋棋盘 - CSS Pseudo Elements 的使用
  10. mysql chinanet外网连接不上_笔记本电脑无法连接到ChinaNet无线网络怎么解决?
  11. 维持两人爱情关系需要慢慢做的事情
  12. imx6ul rtc 驱动修改
  13. 富途证券后端PHP面经
  14. ctf(EasySQL)
  15. 地球引擎中级教程——基本监督分类(含练习)
  16. LED、CCFL、TFT屏幕三者的区别
  17. 五:Dubbo中Provider参数配置及源码讲解
  18. Flutter基础-(3)Widget之文本Text
  19. 高考如何改变30位互联网大佬的人生?张一鸣,黄峥,蒋凡,马化腾...
  20. 网心科技入选2022中国边缘计算企业20强

热门文章

  1. 小米手机如何更换铃声和微信提示音
  2. 功率 dbm vrms vpp mw换算 (正弦波)
  3. 怎样用计算机弹出声音,电脑没声音怎么调出来
  4. Vim插件管理:Pathogen安装
  5. 程序性能优化之编译器篇(Racoon)
  6. 关于DMZ区介绍及相关策略
  7. Java问题排查系列--线上问题排查的方法/步骤
  8. Android error: “Apostrophe not preceded by \” 解决办法
  9. Simulink仿真入门到精通(十七) Simulink代码生成技术详解
  10. ubuntu下配置smbd服务器,Windows访问Linux目录