美文网首页java之路
JavaSE梳理四:初始化与清理

JavaSE梳理四:初始化与清理

作者: 今天比昨天努力 | 来源:发表于2019-11-02 21:42 被阅读0次

    1,区分方法重载:参数列表

    如果参数列表相同,即使返回值不同,如果方法名相同是会报错的!!!

    2,基本类型的重载

    实际参数类型小于方法中生命的形式参数类型:实际数据类型就会被提升。Char型比较特殊,如果无法找到char参数就直接提升到int。

    实参大小形参呢?需要类型转换进行窄化转换。如果不这样,编译器就会报错。

    3,This关键字

    只能在方法内部使用,表示对“”调用方法的那个对象“的引用。

    如果在方法内部调用同一个类的另一个方法,就不必使用this,直接调用即可。

    This关键字还可以调用构造器,但是只可以在构造器中调用其他的构造器,要在最起始处。并且只可以调用一个构造器,不可以连续在同一个方法中调用两个。

    注意:除了构造器之外,编译器禁止在其他任何方法中调用构造器。

    补充:this适用于:产生二义处,使用this来指明当前对象;普通方法中,指向该方法的对象,构造方法中,指向正要初始化的对象。还可以调用重载的构造方法,避免相同的初始化代码。不能用于static方法中。

    4, Static关键字

    注意:在static方法的内部不能调用非静态方法(反过来是可以的),原因是:static是随着类加载而存在,优于构造函数执行,非静态的方法是对象建立后才能使用。

    Static方法是没有this的方法(非静态的)。不能应用于局部变量,只能作用于域(数据成员)。

    5, Finalize

    用途:对象可能不被垃圾回收,垃圾回收只与内存有关,也就是说,使用垃圾回收期的唯一原因是为了回收程序不再使用的内存。所有与垃圾回收的任何行为必须同内存及其回收有关。如果Java虚拟机没有面临内存耗尽,他是不会浪费时间去垃圾回收去回复内存的。

    垃圾回收器:一边回收空间,一边使堆中的对象紧凑排列,避免频繁的内存页面调度-将内存移进移出硬盘。

    垃圾回收工作原理:1,停止-复制:程序暂停,将所有存活对象从旧堆复制到新堆,没有被复制的都是垃圾。复制后,排列时紧密的,会被重新分配空间。缺点:需要两个堆,来回复制,效率低,维护时间久。2,标记-清扫:也是从堆栈和静态存储区开始,遍历所有引用,找出所有存活的对象,然后标记,这个过程不会回收。全部标记工作结束然后清理没有标记的对象。缺点:清理后堆的排列时不连续的。

    6,初始化顺序

    变量(所有的基本类型和对象的引用,包含在定义时已经指定初始值的变量)的定义即使散布于方法定义之间,也会最先被初始化,优先于任何方法(包括构造器)。P94

    静态数据初始化:优先于变量的初始化;无论创建了多少个对象,静态数据都只占用一份存储区域。如果域时静态的基本类型那么会按照基本类型的标准初始化值,如果是一个对象引用默认是null。静态对象只会在class对象首次加载的时候初始化一次。静态数据初始化顺序:先静态对象(切记:没有因前面的对象创建而被初始化)--“非静态“对象

    值得注意的一点:多个静态初始化组合成一个特殊的“静态子句”(静态块),static{}和其他的初始化动作是一样的。

    非静态实例初始化:用来初始化对象的非静态变量{};无论调用了那个显式构造器,他都会执行。而且是优先于构造器执行/

    对象的创建过程,类型为Object:

    1. 首次创建时或者Object的静态方法或者静态域首次被访问时,Java解释器必须查找路径,定位class文件

    2. 载入class文件,这个时候有关静态初始化都会执行。只会执行一次

    3. 当new对象的时候,首先会在堆上为对象分配足够的存储空间

    4. 这块存储空间会被清零,这就自动的将对象中的所有基础类型数据都设置成了默认值,而引用则被设置成null。

    5. 执行构造器

    7, 数组初始化

    记住:所有的类都直接或间接的继承于Object类。

    JavaSE5之后出现了:可变的参数列表譬如:Object...等同于Object[];这仅仅是从元素列表到数组的自动转换。注意:可变参数列表使得重载过程变得复杂。可能会出现编译错误,因为在不使用参数的时候去调用可变参数的方法,编译器无法知道应该调用那个。譬如:f1(1,'1');f1('a','b');f1();解决方法:给重载的方法都增加一个非可变参数即可。

    8, 枚举类型

    有一个特别实用的特性:在switch语句内使用。Switch是要在有限的可能值集合中进行选择。

    相关文章

      网友评论

        本文标题:JavaSE梳理四:初始化与清理

        本文链接:https://www.haomeiwen.com/subject/zsihbctx.html