import java.util.Random;
/*
*Java生命周期
* 当编写一个Java文件,经编译后生成一个class文件,Java虚拟机能识别class文件,Java生命周期就是class文件从加载到消亡的过程
* 分为 加载、连接、初始化、使用、类卸载5个过程
* 1、加载
* 在源class文件中找到类的信息将其加载到方法区中,在堆中实例化一个java.lang.Class对象,作为方法区中这个类的信息入口
* 2、连接
* 连接一般是在加载和初始化阶段交叉进行
* (1)验证:确定该class文件语法规范无错
* (2)准备:按顺序为static修饰的成员变量和语句块分配内存,并设置默认初始值
* main()方法是静态方法,它和类一起加载
* (3)解析:把常量池中的 符号引用 转换为 直接引用 ,就是JVM将所有类或接口名、字段名、方法名转换为具体的内存地址(包括加载main方法)
* 3、初始化
* 将静态变量(类变量)赋值的过程,只有static修饰的才能被初始化
* 4、使用(main方法执行过程,main方法中局部变量在初始化阶段赋默认值,使用时才进行赋值)
* 方法是在栈里面执行,调用哪个方法,将该方法压栈,用完弹栈。main方法执行时最开始将main方法压入栈底,
* 等待方法体中所有操作执行完,弹栈,程序周期结束。
* (1)对象实例化:执行构造方法的内容如果该类存在父类则JVM会显示或隐式的先执行父类的构造方法,在堆中为父类的实例变量开辟空间
* 并赋予默认初始值,然后根据自身类中构造方法赋值给自身的实例变量。然后引用变量获取对象的首地址,通过操作对象来调用实例变量和方法
* (2)垃圾收集:当对象不再被引用时,被虚拟机标记上垃圾记号,在堆中等待GC回收
* (3)对象终结:对象被GC回收后,对象不再存在
* 5、类卸载
* 生命周期走到最后一步,程序中你不在有该类的引用,该类也被JVM执行垃圾回收,结束
* */
/*
* 编译器功能:把代码编译成class文件,以及检查代码的语法;
* 如果类中没有构造方法,编译器则默认创建一个公共的无参构造
* 为static修饰的成员变量分配内存,并设置默认初始值
* 构造方法:
* 作用:创建当前类的实例化对象,初始化成员属性
* 初始化:赋值
* 静态变量初始化:类加载阶段(main方法执行之前)
* 如果不定义构造方法,JVM默认创建公共的无参构造
* 若定义了构造方法(有参/无参),JVM不会默认创建构造方法
* 构造方法默认:公共的,静态的,无返回值,方法名和类名相同
* 声明时不加static,
* 语法:[权限控制修饰符] 类名(参数列表){方法体}
* 构造方法可以重载,根据需求重载
*
* 方法的目的:代码重用性,提高代码效率
* 方法名命名:字母数字下划线美元符号,不能以数字开头,不能使用关键字和保留字,见名知意,驼峰命名
*
* 成员方法可以和类名相同(也就是构造方法)
* 区分:看返回值,构造方法没有返回值,成员方法必须要返回值,如果没有用void表示
*
* */
Java构造方法及程序生命周期
最新推荐文章于 2021-05-31 21:28:47 发布