java学习笔记:字节码

字节码:
每个JVM指令都包含一个操作码opcode,随后是0个或多个表示操作参数的操作数.

如:
int i=0;
i=i+1;
System.out.println(i);

对应字节码:
0 iconst_0                    //定义了一个值未0的整形常数
1 istore_1                    //将来自堆栈顶部的一个值(本例中为0)存储再由下标规定的局部变量(本例中为i)中
2 inc 1 by 1
5 getstatic #21 <java/lang/System.out>
8 iload_1
9 invokevirtual #27 <java/io/PrintStream.println>
12 return

静态类字段(System.out)的名称和参数值(i)再println方法被调用之前首先被退到操作数堆栈,关于指令的详细信息可在JVM规范中获得.(The

Java Virtual Machine Specification)

Java 声明的类型和用在字节码中的相应字段的描述符类型对应关系如下:
byte  :  B
char  :  C
double:  D
float :  F
int   :  i
long  :  J
short :  S
boolean: Z
Classname instance   :   L<Classname>;
[](一维数组)  :  [


例如:
ing number;       对应 I
int[][] number;   对应 [[I
Object reference; 对应 Ljava.lang.Object;

方法描述符采用如下格式创建:
([<param1>[...<param N >]])<return>
其中<param1>....<param N>是可选参数类型描述符
    <return>是返回类型描述符,如果返回值为空则为V

例如:
Integer getIntProperty(String PropertyName,int defaultValue)
有如下方法:
(Ljava.lang.String;I)Ljava.lang.Integer;

某些方法具有预定义的名称,静态出时候就命名为<clinit>,实例初始化和构造函数就命名为<init>.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值