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语句内使用
- JAVA学习日记---Thinking in Java学习笔记,第5章总结
- JAVA学习日记---Thinking in Java学习笔记,1-4章总结
- JAVA学习日记---Thinking in Java学习笔记,6章总结
- 《Thinking in Java》学习笔记-----第1章 对象导论
- 《Thinking in Java》学习笔记-----第2章 一切都是对象
- Thinking In Java学习笔记
- Thinking in Java学习笔记
- thinking in java 学习笔记
- 《Thinking in java》学习笔记
- Thinking in Java学习笔记
- Thinking In Java学习笔记
- 《Thinking In Java》学习笔记:第5章 初始化与清理
- 《Thinking in Java》学习笔记-----第5章 初始化与清理
- java学习笔记1-thinking in java
- java学习笔记2-thinking in java
- java学习笔记3-thinking in java
- thinking in java 学习5
- 学习 thinking in java
- c++第二节课
- 闭包
- 为什么中国的程序员总被称为码农?
- C#快速入门
- PAT程序设计考题——甲级1027(Colors in Mars ) C++实现
- JAVA学习日记---Thinking in Java学习笔记,第5章总结
- C++ #define后带括号与不带括号的区别
- Glide 4.0
- TreeMap的put()和delete()详解
- linux 常用命令行 (sftp命令)
- disabled 与 readonly的区别
- @GeneratedValue
- SQLite 错误码
- python 字典