一、Java中创建一个对象,例如 Person person = new Person("小明",18);这短短的一行代码,我们接下来对此进行解析;
1.声明:将变量名称与对象类型关联的变量声明;
Perrson person 的含义是使用person引用一个Person类型的对象,其初始值待定,直到通过new创造了一个对象并分配给它。这里知识简单的声明一个引用变量而并没有创建一个对象。
2.实例化:new关键字是一个java运算符,通过它来创建对象;
new运算符实例化一个类对象,通过给这个对象分配内存并返回一个指向该内存的引用。new运算符也调用了对象的构造函数。由new运算符返回的引用可以不需要被赋值给变量。它也可以直接使用再一个表达式中。例如:int age = new Person.age;
3.初始化:new运算符,随后调用构造函数,初始化新创建的对象;
总结:
1.Java关键字new是一个运算符。与+、-、*、/等具有相同或者类似的优先级
2.创建一个Java对象需要三步:声明引用变量,实例化,初始化对象实例
3.实例化:就是"创建一个Java对象"----分配内存并返回指向该内存的引用
4.初始化:就是调用构造方法,对类的实例数据赋初始值
二、Java在new一个新对象的时候内存中发生了什么?
Java在new一个对象的时候,经过以下步骤:
1.首先是JVM虚拟机编译对象所在的class文件,将class文件放入方法区中
2.JVM虚拟机读取main方法的入口,将main方法入栈,执行创建对象的代码,如Person p = new Person();
3.在main方法所在的栈内存中分配引用 p
4.在堆内存中分配内存,将创建的Person对象方法堆内存;
5.将栈中的引用变量 p,指向Person对象;