java 字节码 汇编_大话+图说:Java 字节码指令——只为让你懂

原标题:大话+图说:Java 字节码指令——只为让你懂

前言

随着Android开发技术不断被推到新的高度,对于Android程序员来讲越来越需要具备一些对深入的基础性的技术的理解,比如说Java汇编指令。不然,可能很难深入理解一些时下的新框架、新技术,盲目一味追新也会越来越感乏力。

本文既不求照本宣科,亦不求炫技或著文立说,仅力图以最简明、最形象生动的方式,结合例子与实战,让小白也能搞懂这门看似复杂的技术概念。

单刀直入

闲言碎语不要讲,先表一表,什么是Java汇编指令?简而言之,Java汇编指令就是Java虚拟机能够听得懂、可执行的指令,也可以说是Java代码的最小执行单元。

有点Java基础的人一定都知道,javac命令会将Java源文件编译成字节码文件,也就是.class文件,里面就包含了大量的汇编指令。因此可以将javac命令理解为一个翻译命令,将源文件翻译成虚拟机可以执行的指令。

那么最直观的探究方法莫过于直接对比一下翻译前后的内容。

具体如何对比呢?就不得不用到Java为我们一直默默提供的一项利器,javap命令,它可以解析字节码,将字节码内部逻辑以可读的方式呈现出来。为了紧贴实战,我们直接在新建的Android工程里,写这样一个Activity类,里面包含几个由简单到复杂的方法和一个名为name的字段:

bce8959dd4fecfee44985ee76315d894.png

如图,以上方法,复杂度由低到高依次为:getName

下面我们编译工程,然后在下图所示的目录找到该类的字节码文件:

d28b198d608dd6a82c606abfb48f69e1.png

cd到这个路径下,运行万能的javap命令:javap -v -p MainActivity,就可以观看到翻译版的Java字节码的胴体了!这里的-v意思是啰嗦模式,会输出全面的字节码信息,而-p是指涵盖所有成员。原字节码信息输出内容较多,基于本文的目标,取其一方法的内容,整理如下图:

方法 1: getName()

9c4383e3793236ee047117b2ae23cd2b.png

这个getName的方法应该是再简单不过的Java代码,翻译成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值