咋理解java中new和已创建好构造器的关系

new Xxx()只是一个源代码中的语法,也不能分开写,应该看做一个整体。所以你研究new是什么作用,Xxx()是什么作用,可能并没有任何意义。至于参数如何传递,可以了解一下虚拟机的部分知识,如JVM指令集,虚拟机栈。~~~~~~~~~语法是源代码的语法,被编译后就已经完成了历史使命。之后存在的是字节码,等到程序运行时被载入,虚拟机根据生成的字节码来运行。就new Xxx()来说,至少生成三条字节码。第一条是new指令,分配内存空间,并初始化对象头,将成员变量设置为零值。将对象引用压入栈顶。第二条是dup指令,复制刚刚压入的对象引用,并压入栈顶。主要是用于构造函数中的this引用。如果要调用的构造方法有参数,要在这里依此压入栈顶。第三条是invokespcial指令,调用构造方法。最后,栈中还会剩有一个对象引用,结局可能是不用抛弃,立即使用,赋值给某个变量。
■网友
函数参数的传递,和是不是构造方法没有关系,也不是java特有的。每当一个函数被调用时,它需要的参数会被压入栈(stack)中,在你这个例子中,new MyArrayList(2)时,参数2会和其他必要参数一同被压入栈中,在构造函数中,jvm会根据当前的栈指针和局部变量的个数,计算出size这个变量的具体位置,然后直接读取size的值
■网友
楼主这上下文。。。。我真是看不懂啊。。。。。如果是继承了ArrayList,调用的是super(2)
■网友
new 就是实例化对象(构造器)呗,构造器如果不写就直接默认。


    推荐阅读