一、代码注解
public class TestObject {//创建主类TestObject public static void main(String[] args) {//main方法 Car c1 = new Car();//创建Car类的一个对象c1 c1.changeColor("红色");//调用Car类成员方法changeColor()员变量color赋值为红色 c1.showColor();//调用Car类成员方法showColor()打印我的颜色是红色 System.out.println(Car.tyreNum);//输出Car类中的静态成员变量tyreNum System.out.println(c1.tyreNum);//输出Car类的对象c1的静态成员变量tyreNum Car c2 = new Car();//创建Car类的一个对象c2 Engine e = new Engine();//创建Engine类的一个对象e e.speed = 1000;//给e对象成员变量speed赋值为1000 e.weight = 10;//给e对象成员变量weight赋值为10 c2.engine = e;//将e的引用赋值给c2的成员变量engine c2.color = "黑色";//给c2的成员变量color赋值为黑色 c2.tyreNum = 10;//给c2的静态成员变量tyreNum赋值为10 System.out.println(c1.tyreNum);//打印出对象c1的静态成员变量tyreNum的值(4) } } class Car { static int tyreNum = 4;//声明Car类的一个为int类型的静态变量tyreNum并初始化为4 Engine engine;//声明Car成员变量为engine类型 String color; // char sequence :字符序列,声明字符串color void changeColor(String c) {//构造一个方法,返回值为void类型,传入数据类型为字符串 color = c;//将传入的字符串赋值给color } void showColor() {//构造一个方法用于输出color System.out.println("我的颜色是:" + color); } } class Engine {//定义一个Engine类 int speed;//声明一个int类型变量speed int weight;//声明一个int类型变量weight }
二、运行图解
首先加载类的信息:
开始执行main方法:
执行完Car c1 =
new
Car();语句后 :
执行完成c1.changeColor(
"红色"
);后:
c1.showColor();语句执行过程:
执行结束后:
System.out.println(Car.tyreNum);
System.out.println(c1.tyreNum);
这两句语句执行找到加载Car类中tryNum语句所在地址输出tyrNum
但是c1.tyrNum是通过找到0x01地址输出对象c1的变量tyrNum
执行完成后恢复之前图中
接下来执行 Car c2 =
new
Car();
后
执行 Engine e =
new
Engine();
后
执行
e.speed =
1000
;
e.weight =
10
;
c2.engine = e;
c2.color =
"黑色"
;
c2.tyreNum =
10
;
System.out.println(c1.tyreNum);
后:
此时main方法中所有语句执行完成,
main方法执行完毕