3.6 接受参数 如果n个参数传给一个实例的方法,按照约定,它们被接受并放在这个新方法创建的栈帧中的局部变量表里,在局部变量表中的序号从1到n.这些参数按照它们传递过来的顺序存放.例如: int addTwo(int i, int j) { return i + j; } 编译为 Method int addTwo(int,int) iload_1 // (i) iload_2 // (j) iadd // Add; leave int result on operand stack iretu
泛型类型擦除 C#中的泛型,不论是代码中,还是编译后,还是运行期,都是切实存在的.List<String>和List<Int>是两个截然不同的类型,有自己的虚方法表和类型数据,这种实现称为类型膨胀. Java中的泛型是编译之后就消失了.只在代码中存在. 当泛型遇见重载 public class OverloadTest { public void testType(List<String> list) { System.out.println("
建议17: 慎用动态编译 //=========这篇博文暂时理解不透......... 动态编译一直是Java的梦想,从Java 6版本它开始支持动态编译了,可以在运行期直接编译.java文件,执行.class,并且能够获得相关的输入输出,甚至还能监听相关的事件.不过,我们最期望的还是给定一段代码,直接编译,然后运行,也就是空中编译执行(on-the-fly),来看如下代码: public class Client { public static void main(String[] args)
当看到"类的加载机制",肯定很多人都在想我平时也不接触啊,工作中无非就是写代码,不会了可以百度,至于类,jvm是怎么加载的我一点也不需要关心.在我刚开始工作的时候也觉得这些底层的内容距离我还很遥远,根本不用关系,可是随着做开发的时间越来越长,慢慢的已经意识到虚拟机相关要领的重要性.一直想写篇和虚拟机相关的文章,无奈之前由于各种原因一直没写,年初工作还不是很忙,抽时间来慢慢完善jvm的内容. 好了,不说废话了,大家一起来看下代码吧,都来猜猜下面的两份代码的执行结果是什么? class S