字段表的ConstantValue

2014年8月29日

参考书籍:book1:深入java虚拟机

book1中错误:

P191,书中说,只有被static关键字修饰的变量才可以使用ConstantValue,

我自己写了代码,进行javap反编译,

在源代码中:final int=1;

在字节码中会出现ConstantValue

关于这一点,我按照书中前言所述,发了邮箱,但是没有反应。。。。。。

这本书确实不错。

字段表:

结构与方法表的结构相同,可以参考我对方法表的描述。

之所有把这个部分也单独列出来,是因为在字段表中,可能会有一个特殊的属性ConstanValue

1.什么时候会有这一个属性?????

(1).final 字段(字段类型为基本类型和String)

(2).定义时指定值。

(3).编译器认识这个值。

2.为什么在访问一个类中的静态编译器常量,不会引起对这个类的初始化?????

参考《类的加载详解》中的准备阶段。

时间: 2024-10-14 19:37:27

字段表的ConstantValue的相关文章

《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的

0.前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的. 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成<Java虚拟机原理图解> 这个系列,以图解的形式,将抽象的JVM虚拟机的知识具体化,希望能够对想了解Java虚拟机原理的的Java程序员 提供点帮助. 读

Jvm(38),class文件结构----字段表集合

0.前言 读完本文,你将会学到: 1.类中定义的field字段是如何在class文件中组织的 2.不同的数据类型在class文件中是如何表示的 3.static final类型的field字段的初始化赋值问题 1.概述 字段表集合是指由若干个字段表(field_info)组成的集合.对于在类中定义的若干个字段,经过JVM编译成class文件后,会将相应的字段信息组织到一个叫做字段表集合的结构中,字段表集合是一个类数组结构,如下图所示: 注意:这里所讲的字段是指在类中定义的静态或者非静态的变量,而

JVM-class文件完全解析-字段表集合

 字段表集合 这个class文件的解析,分析得有点太久了.前面介绍类魔数,次版本号,主板本号,常量池入口,常量池,访问标志,类索引,父类索引和接口索引集合.下面就应该到字段表集合了.  紧接着接口索引集合的就是字段表的集合了. 字段表(field_info)用于描述接口或者类中声明的变量.字段包括类级变量以及实例级变量,但是不包括在方法内部声明的局部变量. 字段表的结构: 类型 名称 数量 u2 access_flags 1 u2 name_index 1 u2 descriptor_index

深入理解Java虚拟机笔记---字段表集合

字段表(field_info)用于描述接口或类中声明的变量.字段(field)包括了类级变量或实例变量,但不包括方法内部声明的变量.描述一个字段的信息有:字段的作用域(public,private,protected修饰符),是类级变量还是实例级变量(static修饰符),可变性(final),并发可见性(volatile修饰符,是否强制从主内存读写),是否可序列化(transient修饰符),字段数据类型(基本数据类型,对象,数组),字段名称.这些信息中,各个修改符都是布尔值,要么有某个修饰符

MYSQL利用Navicat对含有Bold字段表进行导入导出

MYSQL中含有Blob字段是一件挺麻烦的事情,导出导入不方便.我介绍我是怎么做的. 1.在MYSQL的my.ini最后中添加一行配置max_allowed_packet = 100M,重启MYSQL服务 根据实际情况来定这个数值的大小,我这次表里面有82个mediumblob字段,所以设置为100M 2.用XML格式导出数据 3.选择用XML导入数据 选择表示一行的标签,我这里是RECORD. 4.耐心等待,如果有报错多少条处理失败是因为max_allowed_packet = 100M的值设

大量字段表单在PHP便捷处理分享

关于程序开发中的表单批量提交策略很多时候一个表单太多的字段,如何能够高效获取表单字段,也为如何提神开发的效率和统一性? 比如一个系统的某个有26个字段,那么我用表单的名称用26个a到z的字母, 你是选择 <input type="text" name="a">,<input type="text" name="a">,……,<input type="text" name=&qu

使用DBLink方式同步远程数据库中含Blob、Clob字段表的问题解决

在数据库同步中我们经常会用到DBLink方式.DBLink可以将物理上存放于网络的多个数据库在逻辑上当成一个单一的大数据库.开发人员无需关心数据库的网络分布,就能很方便的实现从不同数据库之间读取数据.如何在Oracle数据库间建立DBLink我在之前的文章已有涉及,这里就不花篇幅讲解了.具体请查看Oracle建立DBLink. 本篇文章主要阐述如何解决DBLink方式无法实现Blob.Clob字段数据同步的问题.在网上已经有很多牛人给出了解决方案,在参照他们的方案解决问题的过程中,发现有些小问题

oracle存储过程生成含有clob字段表的可执行导出脚本

oracle表如果含有clob字段,则无法导出用sql脚本,尤其需要进行数据备份或者数据导入导出时候不方便. 这个存储过程你只需传入表名和需要返回的结果,就可以获取可执行的sql,直接在PL/SQL执行返回的结果,即可将数据导出成sql, 存储过程如下 create or replace procedure generate_insert_sql(t_name in varchar2,execute_sql out varchar2) as CURSOR col_cur is select co

关于 OGG &quot;Loading data from file to Replicat&quot;同步含有lob字段表的部分记录的关键参数

首先说明一点: Loading data with an Oracle GoldenGate direct load 这个方法,对含有如下数据类型的table,是无法使用的: LOBs, LONGs, user-defined types (UDT), or any other large data type that is greater than 4 KB in size. 因此,遇到如下需求时,就不得不用OGG "Loading data from file to Replicat&quo