1. 参数传递的方式
a).传值
b).传址
传值,只是传递值的copy
传址,只是传递地址的引用,可以修改引用所对象的变量值
其传递参数的结果:
1).对值参数的修改没有保留下来
2).对对象参数的修改保留下来
3).交换对象参数的结果没有保留下来
对象引用进行的是值传递
1). 一个方法不能修改一个基本数据类型的参数
2). 一个方法可以改变一个对象参数的状态
3). 一个方法不能让对象参数引用一个新的对象
2. 重载与重写
重载,方法相同,参数不同,类型或者参数个数,类型的顺序不同,都可以,与返回值类型无关。
重写,方法的声明相同,方法的实现不同,一般在子类实现接口,重写接口的抽象方法。
注意;构造器能重载,不能重写。
不能有两个名字相同、参数类型和个数都相同的,返回值不同的方法。
3. 默认域初始化
实例域或者静态域 都可以默认初始化
初始化: 数值=0 ; 布尔值=false; 对象引用= null
4. 无参构造函数
做的事情,1).会为实例域设置默认值,不是静态域
1). 特点:
- 类至少有一个构造函数,没有构造函数,则会默认提供一个无参数的构造函数
- 有构造函数,且不是无参构造函数,系统不会默认提供无参构造函数
- 构造函数之间的调用this(...)
5. 参数名
区分实例域与局部参数,可以使用this.参数名= 参数名
6. 调用另一个构造器
方法:this(...), super(...)
this(...)调用本类的构造函数
super(...)调用父类的构造函数
tihs(),与super()必须放在构造函数的第一行,不能同时存在
7. 初始化块
初始化数据域的方法
- 在构造器中设置值
- 在声明中赋值
- 初始化块赋值
整理“父构造函数”,“父初始化块”,“父静态块/域”,“子构造函数”,“子初始化块”,“子静态块/域”加载顺序 按照从先到后: 1. 父静态块/域 --> 2.子静态块/域 ----> 3.子初始化块 -->↓ 6. 子构造函数 <-- 5.父构造函数 <---- 4.父初始化块 <---
注意: 域初始化语句和初始化块的执行顺序,按照在类声明中出现的次序
8. 对象析构与finalize
java不支持对象析构,
finalize的意思:将在垃圾回收器清除对象之前调用,但是不会立即
- (1).对象不一定会被回收。
- (2).垃圾回收不是析构函数。
- (3).垃圾回收只与内存有关。
- (4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。
参考 Java finalize方法使用[http://blog.csdn.net/carolzhang8406/article/details/6705831]