版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载,违者必究。 https://blog.csdn.net/Cricket_7/article/details/91411615
1,创建汽车类,车的属性(车的颜色,车的轮胎),车的行为(车子是否能运行)
/*
车的属性
车的颜色
车的轮胎数
车的行为
车运行
*/
class Car {
//成员变量
String color; //车的颜色
int num; //车的轮胎数
public void run() { //车运行
System.out.println(color + "..." + num);
}
}
【1】一个对象的内存图
class Demo1_Car {
public static void main(String[] args) {
Car c1 = new Car(); //创建对象
//调用属性并赋值
c1.color = "red"; //为车的颜色赋值
c1.num = 8; //为车的轮胎数赋值
//调用行为
c1.run();
}
}
-
1,进入测试类,方法区加载Demo1—car.class。 进入main方法
-
2,Car c1 。方法区加载Car.class 创建成员变量。和成员方法。
-
3,new Car(); 在堆里面开辟一个有地址的区域。赋值给给0x0011。
-
4,给 color,num 进行赋值。
-
5,栈调用c1,run()。run()使用完弹栈。
【2】两个对象的内存图
class Demo1_Car {
public static void main(String[] args) {
Car c1 = new Car(); //创建对象
//调用属性并赋值
c1.color = "red"; //为车的颜色赋值
c1.num = 8; //为车的轮胎数赋值
//调用行为
c1.run();
Car c2 = new Car(); //创建对象
c2.color = "black"; //为车的颜色赋值
c2.num = 4; //为车的轮胎数赋值
c2.run();
}
}
-
1,进入测试类,方法区加载Demo1—car.class。 进入main方法
-
2,Car c1 。方法区加载Car.class 创建成员变量。和成员方法。
-
3,Car c1 = new Car(); 在堆里面开辟一个有地址的区域。赋值给给0x0011。
-
4,给 color,num 进行赋值。
-
5,栈调用c1,run()。run()使用完弹栈。
-
6,Car c2 = new Car(); 在堆里面开辟一个有地址的区域。赋值给给0x0022。
-
7,c2.color,num 进行赋值。
-
8,栈调用c2,run()。run()使用完弹栈。
【3】三个引用两个对象的内存图
-
三个引用,有两个对象的引用指向同一个地址