您当前的位置: 首页 >  Java

小志的博客

暂无认证

  • 0浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

深入理解Java虚拟机——魔数与Class文件的版本

小志的博客 发布时间:2022-02-22 21:45:47 ,浏览量:0

目录
    • 一、魔数
      • 1.1、魔数的概述
      • 1.2、魔数的作用
      • 1.3、版本号
    • 二、通过Binary Viewer工具查看编译后的Class文件
      • 2.1、Binary Viewer工具的下载与安装
      • 2.2、Binary Viewer工具查看编译后的Class文件

一、魔数 1.1、魔数的概述
  • 每个Class文件的头4个字节称为魔数。
  • Class文件的魔数的获得很有“浪漫气息”,值为0xCAFEBABE(咖啡宝贝?),这个魔数值在Java还称做“Oak”语言的时候(大约是1991年前后)就已经确定下来了。
1.2、魔数的作用
  • 确定这个文件是否为一个能被虚拟机接收的Class文件。
1.3、版本号
  • 紧接着魔数的4个字节存储的是Class文件的版本号:第5和第6个字节是次版本号(minor Version),第7和第8个字节是主版本号(Major Version)。

  • Java的版本号是从45开始的,JDK1.1之后的每个JDK大版本发布主版本号向上加1。

  • 最新的JDK1.7,可生成的Class文件主版本号最大值是51.0。

  • JDK1.1到JDK1.7,主流JDK版本编译器输出的默认和支持的Class文件版本号如下表:

    译器版本-target参数十六进制版本号十进制版本号JDK1.1.8不能带target参数00 03 00 2D45.3JDK1.2.2不带(默认为 -target 1.1)00 03 002D45.3JDK1.2.2-target 1.200 00 002E46.0JDK1.3.1_19不带(默认为 -target 1.1)00 03 00 2D45.3JDK1.3.1_19-target 1.300 00 00 2F47.0JDK1.4.2_10不带(默认为 -target 1.200 00 00 2E46.0JDK1.4.2_10-target 1.400 00 00 3048.0JDK1.5.0_11不带(默认为 -target 1.500 00 00 3149.0JDK1.5.0_11-target 1.4 -source 1.400 00 00 3048.0JDK1.6.0_01不带(默认为 -target 1.600 00 00 3250.0JDK1.6.0_01-target 1.500 00 00 3149.0JDK1.6.0_01-target 1.4 -source 1.400 00 00 3048.0JDK1.7.0不带(默认为 -target 1.700 00 00 3351.0JDK1.7.0-target 1.600 00 00 3250.0JDK1.7.0-target 1.4 -source 1.400 00 00 3048.0
二、通过Binary Viewer工具查看编译后的Class文件 2.1、Binary Viewer工具的下载与安装
  • 参考lz此博文链接:https://wwwxz.blog.csdn.net/article/details/107087958
2.2、Binary Viewer工具查看编译后的Class文件
  • 代码

    public class Test2 {
        public static void main(String[] args) {
            System.out.println("hello world");
        }
    }
    
  • 查看编译后的class文件

    在这里插入图片描述

关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0414s