咋理解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 就是实例化对象(构造器)呗,构造器如果不写就直接默认。
推荐阅读
- 学图像处理有哪些不错的书推荐
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 应该怎样理解会员服务的法律性质
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 读书读到3分之一的时候感觉很难理解,要不要继续
- 怎样简洁到位地让外国人理解中文互联网文化中的「屌丝」、「喷子」、「五毛」、「水军」、「公知」等词
- 27岁,转行java的血与泪,该何去何从
- 怎样统计工程中未使用的java类
- 新互联网网站用Java还靠谱么对比Php,Python,Ruby的话
- 我想学java和安卓软件开发?