java学习笔记-初始化与清理

java通过构造器进行对象的初始化,在对象初始化之前,会先对成员变量进行初始化(static变量只初始化一次)。new表达式会返回一个新对象的引用,但构造器本身没有任何返回值。构造器可以重载,与普通方法一样,通过参数列表来区分重载的方法。如果一个类中没有构造器,则Java会自动添加一个无参的什么都不做的构造器。

重载:对于对象类型,方法重载很容易区分。如果参数中有基本数据类型,因为基本数据类型能从一个较小的类型自动提升到较大的类型,所以在运行是会调用匹配度最高的方法。如:

public void overLoad(int a){
System.out.println("overLoad1"+a);
}
public void overLoad(short a){
System.out.println("overLoad2"+a);
}
public void overLoad(byte a){
System.out.println("overLoad3"+a);
}

public static void main(String[] args) {
byte a = 1;
new CaoZuoFu().overLoad(a);
}

 输出为:overLoad31

public void overLoad(int a){
System.out.println("overLoad1"+a);
}
public void overLoad(short a){
System.out.println("overLoad2"+a);
}
// public void overLoad(byte a){
// System.out.println("overLoad3"+a);
// }


public static void main(String[] args) {
byte a = 1;
new CaoZuoFu().overLoad(a);
}

输出为:overLoad21

如果传入的类型大于形参的类型,则必须进行窄化转换才可以调用。

构造器中调用其他构造器:

public class CaoZuoFu {
private int a;
private short b;
public CaoZuoFu(int a){
this.a = a;
}
public CaoZuoFu(int a,short b){
this(a);
this.b = b;
}
}

this关键字在普通方法内部表示调用次方法的对象。


清理:垃圾回收器准备回收对象是,会先调用对象的finalize方法,第二次垃圾回收动作发生时才会清理对象占用的空间。

public class Clear {
private int a;
private short b;
public Clear(int a){
this.a = a;
System.out.println(a);
}
public void finalize(){
System.out.println("delete"+this.a);
}
public static void main(String[] args) {
Clear test = new Clear(1);
Clear test1 = new Clear(2);
test = test1;
System.gc();
}
}

输出:

1
2
delete1

垃圾回收器工作:

引用计数:每个对象上有一个计数器,当有引用连接到次对象是,计数加1,离开时,计数减1,计数为零时,释放空间。速度很慢,用来说明垃圾回收器的工作原理。

停止-复制:遍历所有的引用,将所有指向的对象复制到另一个堆,清理原来的堆。

标记-清理:遍历所有的引用,将所有指向的对象设一个标记,没有被标记的清理。运行是产生垃圾很少时使用。

  自适应:自动在停止-复制和标记-清理中切换。


局部变量必须显式的进行初始化,成员变量在对象实例化之前会自动初始化。

可变参数:

public class Clear {
public void printClear(String...strings){
for(String clear:strings){
System.out.println(clear);
}
}
public static void main(String[] args) {
Clear test = new Clear();
test.printClear("a","b","c");
}
}

输出:

a
b
c

如果参数中包含可变参数列表,重载时可在前面添加一个参数区分。


枚举(enum)

重写了toString方法,可以显示摸个enum的名字,ordinal()用来显示声明的顺序,static values方法,按照声明顺序产生这些常量值组成的数组。

enum可以在switch语句中使用。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值