上一篇博客 Android-Java-同步方法-synchronized,中讲解了普通方法加入synchronized修饰符,此synchronized的同步锁是this,还介绍方法的封装性,这篇博客就不讲方法的封装性了 先看一个 静态方法加入修饰符synchronized(案例) package android.java.thread12; /** * 售票业务 */ class Booking { /** * 模拟票的总算 10张票 */ private static int ticket…
是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 动态获取类中信息,就是java反射 .可以理解为对类的解剖. 反射机制图解说明: 先创建一个字节码文件: public class Person { private int age; private String name; public Person(String name,int…
package get_class_method; public class ReflectDemo { /** * @param args */ public static void main(String[] args) { getClassObject1(); getClassObject2(); getClassObject3(); } public static void getClassObject1(){ Person p = new Person(); System.out.pr…
pclass = Class.forName("get_class_method.Person"); //Field ageField = pclass.getField("age");//因为age成员变量是私有的,所以会产生NoSuchFieldException异常 Field ageField = pclass.getDeclaredField("age");//获得该对象反映此 Class 对象所表示的类或接口的指定已声明字段 Obje…
Java为什么能够支持跨平台,其实关键就是在于其*.class字节码文件,因为*.class字节码文件有一个统一标准的规范,里面是JVM运行的时需要的相关指令,各家的JVM必须能够解释编译执行标准字节码文件,因此Java是一种跨平台语言,再想想C++/C等语言为什么不是跨平台的,就是因为其源文件经过编译后生成的就是针对特定机器的汇编代码 字节码文件解析 在解析之前最好下载一个工具方便查看(Bytecode viewer),当然也可以不用下载,直接使用JDK自带的命令如javap –c –s –l…
一.常量池的内容 一个java类中定义的很多信息都是由常量池来维护和描述的,可以将常量池看作是class文件的资源仓库,比如java类中定义的方法与变量信息.常量池中主要存储两类常量:字面量(文本字符串,final的常量)与符号引用(类和接口的全限定名,字段的名称和描述符,方法的名称和描述符 一.常量池的结构 二.常量池的分析 常量池(也称常量表):主版本号之后就是常量池的开始位置:java类所对应的常量池主要由常量池数量和常量池数组两部分组成,常量池数量是主版本号之后的两个字节:常量池数组在常…
万字长文,完全虚构. (一) 组里来了个实习生,李大胖面完之后,觉得水平一般,但还是留了下来,为什么呢?各自猜去吧. 李大胖也在心里开导自己,学生嘛,不能要求太高,只要肯上进,慢慢来.就称呼为小白吧. 小白每天来的很早,走的很晚,都在用功学习,时不时也向别人请教.只是好像天资差了点. 都快一周了,才能写些“简单”的代码,一个注解,一个接口,一个类,都来看看吧: public @interface Health {     String name() default "";} publi…
开发工具:IEDA.JDK1.8.WinHex 一.字节码文件结构 源代码 package com.jalja.java.bytecode; /** * @Auther: XL * @Date: 2020/1/4 12:58 * @Description: */ public class BytecodeTest { private int num=1; public int getNum() { return num; } public void setNum(int num) { this.…
一.Access Flags 访问标志 访问标志信息包括该 Class 文件是类还是接口,是否被定义成 public 或者 abstract , 如果是类,是否被声明成 final. 访问标志表 二.Access Flags 的分析 通过上一篇JAVA字节码文件之第二篇(常量池)的分析可知该class文件的常量池结束部分在 63 74的位置 Access Flags 占2个字节,所以该字节码文件的访问标志是00 21,0x0021在 Access Flags 中是0x0020和0x0001的并集…
一.Methods 方法字节码结构 Methods 字节码结构: Methods num:占两byte,Methods 的具体内存占n个byte 方法中每个属性都是Attribute_info,Attribute_info的结构: 1.attribute_name_index:属性名的索引2.attribute_length:表示attribute所包含的字节数,不包含attribute_name_index和attribute_length字段3.max_stack:表示这个方法运行的任何时刻…