JAVA学习日记---Thinking in Java学习笔记,第5章总结

来源:互联网 发布:蓝月传奇淘宝礼包 编辑:程序博客网 时间:2024/05/29 16:28

JAVA学习日记---Thinking in Java学习笔记,第5章总结

第五章 初始化与清理

5.1 用构造器确保初始化

1.构造器命名必须与类名相同

2.构造器也是方法,满足方法的各种特征,无参数的构造器称为默认构造器,默认构造方法或者无参构造器。在没有其他构造方法的时候可以省略不写

   需要注意的是,构造器虽然是方法但是它没有返回值。

3.使用构造器可以创建对象 关键字:new 创建对象时将在堆内存中给对象分配空间


5.2 方法重载

1. 什么是方法重载:在同一个类中,方法名相同但提供的参数个数和类型不同的两个方法叫做方法重载。

   需要注意的是(返回值类型不同是不构成方法重载的)

2. 构造器也是方法,同样可以被重载


5.3 默认构造器

默认构造器又称为无参构造器,在没有其他构造器的情况下,JAVA会帮助类生成一个默认的构造器即无参构造器,可以被省略不写。


5.4 this关键字

1. this关键字可以指当前对象,即当前类的对象

2. this关键字在同一个类中可以调用构造函数,如:this()表示调用此类无参的构造函数

    需要注意的是:在构造器中使用this关键字调用构造器时,必须要写在构造器的第一行。

3. Static关键字用法之前在第二章时候提到过如下:

作用一:static关键字的作用,static关键字修饰的方法和域不会与包含它的那个类的任何对象实例关联,直接可以用类名调用static修饰的域或方法。

static修饰的域属于类,不论这个类的几个对象调用,都是同一个域

作用二:static表示静态的概念,static方法没有this关键字,会报错;并且在静态方法中不能直接调用非静态方法,需要在方法中创建一个对象才可以调用,但是在非静态方法中既可以调用非静态方法又可以调用静态方法

作用三: static关键字还可以用在静态初始化块

作用四: static关键字还可以用在静态导入


5.5 清理:终结处理和垃圾回收

垃圾回收和清除都不一定会发生,如果JAVA虚拟机(JVM)并未面临内存耗尽的情况,它是不会浪费时间去执行垃圾回收以恢复内存的

JAVA适用的是一种自适应的清理机制:自适应的,分代的,停止-复制,标记-清扫式的垃圾回收机制。

停止-复制:stop-and-copy,先暂停程序的运行,然后将所有存活的对象从当前的堆复制到另一个堆,没有被复制的全部都是垃圾,当对象被复制到新的堆时,它们是一个挨着

一个的

标记-清扫:mark-and-sweep,当程序进入稳定状态之后,可能只会产生少量垃圾,甚至没有垃圾。这个时候再使用停止复制的方法去清理垃圾就会效率很低,所以专用标记清扫的方法,方法所依据的思路同样是从堆栈和静态存储区出发,遍历所有的引用,进而找出所有存活的对象。每当它找到一个存活对象,就给对象一个标记,这个过程不会回收任何对象。只有当标记工作完成时,清理才会开始,在清理的过程中没有标记的对象将被释放,不会发生任何复制动作,所以剩下的堆空间是不连续的,垃圾回收器要是希望得到连续的空间话,将重新整理剩下的对象

JAVA的垃圾回收机制就是上面两种机制的结合


5.6 成员初始化

成员初始化分为全局初始化(类的数据成员)和局部初始化

类的数据成员初始化:JAVA会分配默认的初始化值给基础数据类型,不会报错

局部变量初始化:如果不初始化会报错


5.7 构造器初始化

在初始化之前要先初始化类

初始化顺序:先初始化常量,静态变量,然后在类的内部,变量定义的先后顺序决定了初始化的顺序

总之就是先初始化静态对象,然后非静态的

非静态实例初始化:与静态初始化块仅差一个static关键字,其他语法一致,主要用在匿名内部类中


5.8 数组初始化

1.int [] a = {1,2,3,4};

2.int[] a = new int[]{1,2,3,4};

3.int[] a = new int[7];

4.可变参数列表:static void printArray(Object ...args)


5.9 枚举类型

用到关键字enum,枚举类型的实例是常量

enum特别适用的特性,它可以在switch语句内使用

原创粉丝点击