【JVM001】宋红康JVM字节码举例

这篇具有很好参考价值的文章主要介绍了【JVM001】宋红康JVM字节码举例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

宋红康JVM字节码举例

1 Integer

package jvmT;
public class IntegerTest {
    public static void main(String[] args) {
        Integer i =5;
        int y =5;
        System.out.println(i==y); //true

        Integer i6 =5;
        Integer y6 =5;
        System.out.println(i6==y6);//true

        Integer i5 =128;
        Integer y5 =128;
        System.out.println(i5==y5);//false
    }
}

说明:

1 String

package jvmT;

public class StringTest {
    public static void main(String[] args) {
        String a = new String("hello") + new String("world");
        String b = "helloworld";
        System.out.println(a == b); //false
    }
}

说明:

1 Object

class Father{
    int x = 10 ;

    public Father(){
        this.print();
        x =20;
    }
    public void print(){
        System.out.println("father.x = " + x );
    }
}

class Son extends Father{
    int x = 30 ;

    public Son(){
        this.print();
        x =40;
    }

    public void print(){
        System.out.println("son.x = " + x );
    }
}

public class ObjectTest {

    public static void main(String[] args) {
        Father f =
        System.out.println(f.x);

    }
}

执行结果:
【JVM001】宋红康JVM字节码举例

说明:
(1)成员变量(非静态)赋值过程:①默认初始化—>②显示初始化/代码块中初始化—>③构造器中初始化—>④有了对象之后可以f.x或者f.method()设置属性值
(2)方法有多态,属性没有多态

main方法的字节码文件
【JVM001】宋红康JVM字节码举例
下面是Father类构造器字节码文件
【JVM001】宋红康JVM字节码举例

下面是Son类构造器字节码文件
【JVM001】宋红康JVM字节码举例
字节码文件说明:

1、main的字节码文件第3行会执行Son的构造器方法,我们看Son的构造器方法的字节码文件第二行会调用Father的构造方法,而在Father的构造方法中,会通过this调用print方法,因为子类Son重写print方法,因此此时this调用的print的方法是Son中的print方法,因此会打印son.x =0,为什么是0,是因为子类的中x此时还未显示赋值,即还未执行说明中的第②步。
2、等执行完Father构造器中的print方法,接下来会执行构造器中x=20,即把父类中的属性x赋值20。
3、执行完Father构造器,接下来继续执行第4,5行,会将30显示赋值给Son.x, 然后继续执行第7行this.print方法,此时会打印son.x=30
4、执行完第7行之后,继续执行9,10行,将40赋值给Son.x。
5、执行完Son的构造器方法,我们回到main的字节码文件,看第7,8行,会获取Father.x值,从上面的第二步看出Father.x的值是20,因此最终会打印20.文章来源地址https://www.toymoban.com/news/detail-456126.html

到了这里,关于【JVM001】宋红康JVM字节码举例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JVM——类加载与字节码技术—字节码指令

    jvm的解释器可以识别平台无关的字节码指令,解释为机器码执行。      2a b7  00 01  b1 this .    init() return   准备了System.out对象,准备了参数“hello world”,准备了对象的方法println(String)V,并return 这里常量池直接把查询结果放在了右边。  有了javap,终于不用看那狗屎字节码

    2024年02月11日
    浏览(48)
  • JVM(字节码文件详解)

    类加载器 运行时数据区域 执行引擎(主要理解垃圾回收器,及时编译器) 本地方法 在讲解字节码文件组成前,可以安装使用“ jclasslib ”工具或idea中“ jclasslib ”插件进行字节码文件查看 jclasslib的Github地址: https://github.com/ingokegel/jclasslib

    2024年01月23日
    浏览(65)
  • 【JVM】字节码文件的组成

    1. 魔数与Class文件版本  魔数是一个用于校验字节码文件是否有效的标识,位于文件开头的前四个字节,魔数之后是次版本号和主版本号,共同构成了字节码文件的版本号。 2.常量池 常量池是字节码文件中的一个结构,包含了该类的所有常量,如数字,字符串,符号常量等。

    2024年02月02日
    浏览(48)
  • JVM之类加载与字节码

    根据 Java 虚拟机规范,Class 文件通过 ClassFile 定义。ClassFile 的结构如下: 通过分析 ClassFile 的内容,我们便可以知道 class 文件的组成。 下面这张图是通过 IDEA 插件 jclasslib 查看的,你可以更直观看到 Class 文件结构。使用 jclasslib 不光可以直观地查看某个类对应的字节码文件

    2024年02月14日
    浏览(47)
  • 【JVM 基础】类字节码详解

    源代码通过编译器编译为字节码,再通过类加载子系统进行加载到JVM中运行。 计算机是不能直接运行java代码的,必须要先运行java虚拟机,再由java虚拟机运行编译后的java代码。这个编译后的java代码,就是本文要介绍的java字节码。 为什么jvm不能直接运行java代码呢,这是因为

    2024年02月01日
    浏览(57)
  • JVM之类加载与字节码(二)

    类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段::加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)。其中,验证、准备和解析这三个阶段可以

    2024年02月13日
    浏览(97)
  • JVM系列-2.字节码文件详解

    👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家 📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂博主正在努力完成2023计划中:源码

    2024年01月22日
    浏览(40)
  • JVM之类加载与字节码(一)

    根据 Java 虚拟机规范,Class 文件通过 ClassFile 定义。ClassFile 的结构如下: 通过分析 ClassFile 的内容,我们便可以知道 class 文件的组成。 下面这张图是通过 IDEA 插件 jclasslib 查看的,你可以更直观看到 Class 文件结构。使用 jclasslib 不光可以直观地查看某个类对应的字节码文件

    2024年02月14日
    浏览(46)
  • JVM-透彻理解字节码以及指令

    一、字节码与指令概述 生成字节码: 解释:         cafe babe -  魔数         0000 0031 - 版本号,前面大版本,后面小版本         0022 - 常量池大小 二、JVM编译基本原理 示例: 大白话:         符号解析: int x = 5 -  int 类型的字段 x值为5 以及作用域 大白话:        

    2024年01月22日
    浏览(45)
  • 【JVM】字节码文件的组成部分

    🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 操作数栈是临时存放数据的地方 局部变量表是存放方法中的局部变量的位置 观察如下代码的字节码文件 具体的java源代码: 要想看到java的字

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包