JVM-class文件完全解析-访问标志
访问标志
在前面分析了 class文件的魔数,次版本号,主版本号,常量池入口,常量池,那么在常量池结束后,紧接着的两个字节代表访问标志(access_flages).这个标志用于识别一些类或者接口层次的访问信息,包括:这个class是类还是接口,是否定义为public类型,是否定义为abstract类型,如果是类的话,否被声明为final等.
访问标志及其含义具体如下:
| 标志名称 | 标志值 | 含义 |
| ACC_PUBLIC | 0x00 01 | 是否为Public类型 |
| ACC_FINAL | 0x00 10 | 是否被声明为final,只有类可以设置 |
| ACC_SUPER | 0x00 20 | 是否允许使用invokespecial字节码指令的新语义. |
| ACC_INTERFACE | 0x02 00 | 标志这是一个接口 |
| ACC_ABSTRACT | 0x04 00 | 是否为abstract类型,对于接口或者抽象类来说,次标志值为真,其他类型为假 |
| ACC_SYNTHETIC | 0x10 00 | 标志这个类并非由用户代码产生 |
| ACC_ANNOTATION | 0x20 00 | 标志这是一个注解 |
| ACC_ENUM | 0x40 00 | 标志这是一个枚举 |
access_flages中共有两个字节(16位)可以使用,没有使用到的标志为要求一律为0.
接下来继续把前面的例子往下分析:
源代码:


这个图中,继常量池后,又分析了访问标志.
分析中 0x00 01 和 0x00 20 是通过上面的访问标志表的到的,对应着ACC_PUBLIC和ACC_SUPER .由于只用这两个标志位为1,其他标志位为0,把各个标志为的值和标志本身的值相与之后,再做或计算,就可以计算出整个访问标志的值了.0x00 01 | 0x00 20 = 0x00 21.
JVM-class文件完全解析-访问标志的更多相关文章
- 《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合
讲完了class文件中的常量池,我们就相当于克服了class文件中最麻烦的模块了.现在,我们来看一下class文件中紧接着常量池后面的几个东西:访问标志.类索引.父类索引.接口索引集合. 1. 访问标 ...
- class字节码结构(二)(访问标志、类索引、父类索引、接口索引集合)
<Java虚拟机原理图解>1.3.class文件中的访问标志.类索引.父类索引.接口索引集合 字节码总体结构: 访问标志(access_flags)能够表示什么? 访问标志(access_ ...
- Class类文件结构--访问标志
访问标志的位置:在常量池结束之后的两个字节(16位)表示访问标志access_flags. 访问标志的作用:用于标识类或者接口层次的访问信息:比如该Class是类还是接口,是否为public类型.是否 ...
- 【JVM虚拟机】(6)---深入理解Class中访问标志、类索引、父类索引、接口索引
JVM(6)访问标志,类索引 上一篇博客讲[JVM虚拟机](5)---深入理解JVM-Class中常量池 我们知道一个class文件正常可以分为7个部分: 魔数与class文件版本 常量池 访问标志 ...
- class文件访问标志
class文件中用两个字节共16位代表访问标志(access flags),用于表明该类或接口被访问时能提供的一些信息: 标志名称 标志值 含义 ACC_PUBLIC 0x00 01 是否为Publi ...
- JVM-class文件完全解析-属性表集合
属性表集合 在前面魔数,次版本号,主板本号,常量池入口,常量池,访问标志,类索引,父类索引,接口索引集合,字段表集合,方法表集合,那么接下来就是属性表集合了. 在class文件,字段表,方法表都可 ...
- JVM-class文件完全解析-字段表集合
字段表集合 这个class文件的解析,分析得有点太久了.前面介绍类魔数,次版本号,主板本号,常量池入口,常量池,访问标志,类索引,父类索引和接口索引集合.下面就应该到字段表集合了. 紧接着接口索引 ...
- Class文件内容解析
一.概述 任何一个Class文件都对应唯一一个类或接口的定义信息,但是不是所有的类或接口都得定义在文件中(它们也可以通过类加载器直接生成). Class文件是一组以8位字节为基础单位的二进制流,各个数 ...
- MyBatis源码分析(1)-MapConfig文件的解析
1.简述 MyBatis是一个优秀的轻ORM框架,由最初的iBatis演化而来,可以方便的完成sql语句的输入输出到java对象之间的相互映射,典型的MyBatis使用的方式如下: String re ...
随机推荐
- hiho_1055_刷油漆
题目大意 一棵树,每个节点都有相应的value值.从根开始选择M个节点相互连通,使得这些节点的value值之和最大. 题目链接:[刷油漆][1] 题目分析 典型的树形dp,dp[i][j] 表示以节点 ...
- maven和jdk版本不匹配
解决方法:http://blog.csdn.net/mafan121/article/details/51944346
- ECMAScript 6入门 - let和const命令
详细学习链接: http://es6.ruanyifeng.com/#docs/let let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命 ...
- C++ Primer 第二章 引用 指针 const限定符
1.引用: 为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d也就是声明的变量名(声明符就是变量名). PS:1.通过图片中编译所提示的报错信息 ...
- x+y = ((x&y)<<1) + (x^y) 证明
法一:我们考虑x,y在二进制表示时候,按位相加其中第i位xi+yi = ((xi&yi)<<1) + (xi^yi)其中(xi&yi)<<1表示当xi和yi都是 ...
- _CRT_NONSTDC…与_CRT_SECURE…
目录 第1章说明 1 1.1 _CRT_NONSTDC_NO_WARNINGS 1 1.2 _CRT_NON_CONFORMING_SWPRINTFS 2 1.3 _CRT_SECU ...
- js将long日期格式转换为标准日期格式
<script language="javascript"> //扩展Date的format方法 Date.prototype.format = function (f ...
- 一些简单css3效果的整理
代码: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- JAVA智能设备基于OpenGL的3D开发技术 之AABB碰撞检测算法论述
摘要:无论是PC机的3D还是智能设备应用上,碰撞检测始终是程序开发的难点,甚至可以用碰撞检测作为衡量3D引擎是否完善的标准.现有许多3D碰撞检测算法,其中AABB碰撞检测是一种卓有成效而又经典的检测算 ...
- HTML5自学笔记[ 24 ]canvas绘图之星空草地
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...