java学习笔记——对象的创建及执行过程
作者:互联网
类是抽象的,是对事物的描述,不能直接使用,对象是类的实例,是真正存在的。一个类在正常情况下是不能直接使用的,类似于汽车图纸是不能直接行驶的,如果想使用这个类必须根据这个类去创建这个类的对象,就相当于根据汽车图纸去造车。
创建对象的格式:类名 对象名 = new 类名();
汽车类
public class Car {
// 成员变量(属性)
String color;// 颜色
int price;// 价格
String brand;// 品牌
double width;// 宽度
double length;// 长度
// 成员方法(行为)
public void run(){
System.out.println("一辆汽车颜色是:"+color+",价格是:"+price+",品牌是:"+brand);
}
// 停止方法
public void stop(){
System.out.println("汽车停止行驶了");
}
}
public class TestCar {
public static void main(String[] args) {
// 创建第一辆小汽车
Car car1 = new Car();// 创建了一个汽车对象
// 操作属性
//System.out.println(car1.brand);// Null,成员变量保存在堆里面,成员变量有默认值,局部变量没有,必须初始化后使用
car1.brand = "五菱宏光";
car1.color = "白色";
car1.price = 1000;
car1.length = 8;
car1.width = 2;
System.out.println(car1.brand);
// 操作方法
car1.run();
car1.stop();
// 运行一段程序,要申请电脑内存,内存都是归jvm进行管理的(jvm向操作系统申请空间,分为五部分)
/**
* 内存分为五部分
* 1.栈(stack):主要存放局部变量
* 2.堆(Heap):new 出来的东西都在堆里面,在堆里面的变量都是成员变量,都会有默认值
* 整数默认是0 浮点数默认是0.0 字符默认是空格(\u0000)布尔默认是false 引用类型默认是null
* 3.方法区(Method Area):存放class文件
* 4.本地方法区(Native Method Area):主要和操作系统有关,
* 5.寄存器(pc Register):主要和cpu有关,决定运行速度
*/
}
}
执行过程图
描述:
首先将java类编译成class文件,接着将class文件加载到方法区,然后开始运行类(将Car类中的的成员 变量,成员方法加载到方法区,加载TextCar类),首先运行的是TextCar类,将main方法进栈,在栈中开 辟一片空间保存main方法,然后开始执行main方法里面的代码,car1是局部变量(局部变量定义在方法中,成员变量定义在类下,方法外),在栈中开辟一片空间保存car1,new出来的东西都在堆中,在堆中栈中开辟一片空间保存new Car,然后从方法区加载Car里面的成员变量,并且给成员变量赋上默认值,接着将成员方法加载到堆里面,成员方法比较特殊,在堆中加载的不是方法体,加载的是方法区里面的地址值(每个方法都会生成对应的地址值),在堆中加载完成以后生成一个地址值,然后将该地址值赋值给局部变量car1,接着通过对象名给对应的属性赋值,car1代表的是指向堆里面的地址值,通过car1找到堆里面的地址值,根据car1后面的变量名找到堆中的成员变量给其赋值,通过car1调用方法,方法进栈,通过方法名找到堆中方法的地址值,通过地址值找到方法区中的具体方法,开始执行方法体,执行完成以后,方法出栈,main方法中的所有代码执行完以后,main方法出栈,程序执行完成
标签:java,变量,创建,成员,car1,笔记,Car,方法,加载 来源: https://blog.csdn.net/weixin_46271306/article/details/113351827