第五章 初始化与清理

方法重载是根据参数来区分的,而不是返回值,这里要注意一下参数的基本类型转型问题。如果传入的数据类型(实际参数类型)小于方法声明的心事参数类型,世界数据类型会被提升。char略有不同,如果无法找到恰好接受char参数的方法,就会把char直接提升为int类型。

public class F{
	F(String s ){
	}
	F(int p ){
	}
	F(String s,int p ){
		this(p);
		this(s);//报错
	}
	void doit(){
		this("a");//报错
	}
}
关于this,要注意的地方就是 F(String s,int p )表明:尽管可以用this调用一个构造器,但却不能调用两个。此外,必须将构造器用置于最起始处,否则编译器会报错。 void doit()表明,除了构造器之外,编译器禁止在其他任何方法中调用构造器。

关于finalize(),一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。所以要是你打算用finalize(),就能在垃圾回收时刻做一些重要的清理工作。不知道什么时候会用,还是不要去用的好。不过可以拿来验证一些东西终结条件什么的,虽然不一定出现

package orz.xuchao.test;

class Book {
	boolean checkedOut=false;
	public Book(boolean checkOut) {
		checkedOut=checkOut;
	}
		
	void checkIn(){
		checkedOut=false;
	}
	
	
	protected void finalize() {
		if(checkedOut)
			System.out.println("Error:check out");
		
	}
}
public class TerminationCondition{
	public static void main(String[] args) {
		Book novel=new Book(true);
		novel.checkIn();
		new Book(true);
		System.gc();
	}
}
<span style="font-family: Arial, Helvetica, sans-serif;">java垃圾回收用的是引用可达性算法,java 里面有相互引用的对象组, 不会导致内存泄露。</span>
<pre name="code" class="java">public class TestMultipleParameter {
	static void f(Character ... args){
		System.out.println(args.getClass());
		System.out.println("length=>"+args.length);
	}
	static void  g(int...args){
		System.out.println(args.getClass());
		System.out.println("length=>"+args.length);
	}
	static void f(Character c){
		System.out.println(c.getClass()+"<");
		System.out.println("c"+"<");
	}
	static void f(Character a,Character b,Character c){
	System.out.println(a+b+c);
}
	
	public static void main(String[] args) {
		f('a');
		f('a','b');
		f();
		f('a','b','c');
		g(1);
		g();
	}
}

打印的结果是:

<pre name="code" class="java">class java.lang.Character<
c<
class [Ljava.lang.Character;
length=>2
class [Ljava.lang.Character;
length=>0
294
class [I
length=>1
class [I
length=>0
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">多参数的函数用的比较少,当多参数的函数和固定个数的重载函数冲突的情况下,只调用固定个数参数的重载函数</span>

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值