1、代码
package demo;
public class Car {
String color;
int num;
public Car() {
}
public void run(){
System.out.println("color = " + color);
System.out.println("num = " + num);
}
public Car(String color, int num) {
this.color = color;
this.num = num;
}
}
package demo;
public class Car_Test {
public static void main(String[] args) {
Car car = new Car();
car.color="黑色";
car.num=3;
car.run();
}
}
注意:在使用类描述事物的时候如果没有提供任何的构造方法,在创建该事物的对象的时候系统会偷偷的补一个空
参构造。
2、内存图
3、创建过程
(1) 加载相关类信息到内存的方法区
(2)调用main方法进栈并执行创建类对象相关代码。
(3)在栈空间开辟main方法的的变量空间【存放对象的地址值】。
(4)jvm调用构造方法到堆空间开辟新的空间来存放对象属性具体值以及方法标记值
(5)把初始的对象空间的地址值赋值给栈空间的变量。
4、访问过程
通过栈空间的变量来访问,变量中存放的类对象的地址值
(1)变量通过地址值找到对象在堆空间中的对象空间
(2)通过属性名称找到对象空间对应的属性位置从而找对应的属性值【属性的访问】
(3)通过方法名称找到对象空间中的方法标记,通过方法标记找方法区的对应类的空间
(4)通过方法名称找到对应的方法,并调用方法进栈开始执行。【属于行为访问】