《java编程思想》读书笔记之初始化与清理

作者: java高级架构F六 | 来源:发表于2020-01-08 14:42 被阅读0次

    1.只有在没有默认构造函数的时候,编译器才会默认生成一个,当用户定义了构造函数,编译器便不会再生成默认构造函数。

    可以使用private默认构造函数来禁止继承

    2.方法的构造要素为:方法名和参数列表(不包括返回值),因此重载只能由返回值来重载,无法通过返回值来重载方法

    3.float类型范围大于int但是精度小于int,因此可以在方法需要一个float的时候,传入一个int

    float的范围大概为-2128次幂-2128次幂

    4.调用一个对象的方法的时候,实际上是将这个对象引用作为一个参数传入指定的方法中,用来表示是那个对象调用了此方法

    Student student =new Student();student.getName();//实际上是:Student.getName(student)
    

    5.可以通过this(xx,xxx)来调用其他构造函数

    6.finalize()方法不同于C++中的析构函数

    1. 并不能确定什么时候才会调用此方法,也有可能不会调用
    2. 此方法只于内存有关,只有在JVM可用内存到达极限的时候,才会进行垃圾回收并调用此方法。

    7.finlize()方法可用来做对象终结验证的条件,比如某些对象在被回收之前必须经过某些操作才能回收

    • Closeable对象的close()方法可以放在这里做二次验证,比如关闭文件流等

    8.垃圾回收器:

    找到垃圾

    1. 引用计数法(有循环引用问题)
    2. 追溯引用法

    处理垃圾

    1. 停止-复制法
    2. 标记-清扫法

    一般更多的是将他们结合起来,大对象标记,小对象复制

    9.未初始化的局部对象很有可能是程序员的疏忽,因此对于局部变量,未经初始化就直接使用会出现编译错误

    10.类的成员变量不初始化会默认初始化一个值。boolean默认为false,引用为null

    11.默认初始化是必然的,对于任何初始化形式(定义初始化或者构造函数初始化),成员变量都会先被赋值为默认值,然后再被赋值,因此编译器不会检查是否有已经初始化,因为初始化已经通过上述形式得到了保证

    12.静态对象(static)是在第一次访问此类的时候(使用此类初始化对象或者访问静态数据)的时候才初始化,并且只会被初始化一次

    13.对象的成员初始化顺序为先静态成员,再非静态成员,每个类别中根据定义的顺序进行默认或者赋值初始化

    14.构造函数可以被看作为静态方法

    15.创建对象的过程:假设有个Dog类

    • 第一次访问Dog的静态方法或者静态对象的时候,Java 解释器会先查找Dog类的路径
    • JVM会载入Dog.class,并按定义顺序初始化所有静态变量
    • 当使用new Dog()创建对象的时候,首先在堆上分配足够的存储空间
    • 将分配的存储空间清零并将对象所有的成员默认初始化
    • 执行所有出现在字段定义的时候的赋值操作
    • 执行构造函数

    16.Java所有对象都定义在堆上,其他语言在堆上分配空间性能比较低,但是Java的内存管理是连续的,因此性能依然比较快

    17.Java允许使用静态块初始化,也就是可以定义

    static{

    //do something

    }

    一般用于使用一个方法来初始化一个对象的时候

    18.数组允许两种申明方式:int[] a1或者int a1[]

    19.数组算是一个对象,它包含Object中的所有方法

    20.Java 数组维护了一个length字段,每次存取都会用length来维护数组越界的安全,虽然效率降低是更加安全

    21.当数组作为一个类的成员的时候,默认是null

    22.默认toString()方法打印出来是这个类型名称@对象的地址(修改:已由R大回答得知,toString()打印的不是地址,而是hashCode()或者identifyHashCode()的返回结果)

    23.可变参数本质上还是一个数组(编译器自动填充的语法糖),对于可变数组可以不传参数,此时数组为length为0的数组

    24.可变方法也接受数组对象,并且当传入一个数组对象的时候,编译器便不会再自动填充

    25.可变参数可能带来的问题:重载,当使用重载的时候,最好不要使用可变参数,或者只在一个版本上使用可变参数

    关注我简信回复【资料】可以领取到收集的面试及电子书资料,或许对你有帮助!每天仅限10人

    《java编程思想》读书笔记之初始化与清理 《java编程思想》读书笔记之初始化与清理

    相关文章

      网友评论

        本文标题:《java编程思想》读书笔记之初始化与清理

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