3、在存入数组前要被转换成int值,而long和double在数组中占据连续的两项,在访问局部变量中的long或double时,只需取出连续两项的第一项的索引值即可,如某个long值在局部变量区中占据的索引时3、4项,取值时,指令只需取索引为3的long值即可。下面就看个例子,好让大家对局部变量区有更深刻的认识。这个图来自《深入JVM》:public static int runClassMethod(int i,long l,float f,double d,Object o,byte b) {
4、 return 0; } public int runInstanceMethod(char c,double d,short s,boolean b) { return 0; } 上面代码片的方法参数和局部变量在局部变量区中的存储结构如下图:上面这个图没什么好说的,大家看看就会懂。但是,在这个图里,有一点需要注意:runInstanceMethod的局部变量区第一项是个reference(引用
5、),它指定的就是对象本身的引用,也就是我们常用的this,但是在runClassMethod方法中,没这个引用,那是因为runClassMethod是个静态方法。操作数栈和局部变量区一样,操作数栈也被组织成一个以字长为单位的数组。但和前者不同的是,它不是通过索引来访问的,而是通过入栈和出栈来访问的。可把操作数栈理解为存储计算时,临时数据的存储区域。下面我们通过一段简短的程序片段外加一幅图片来了解下操作数栈的作用。int a = 100;int b = 98;int c = a+b;从图中可以得出:操作数