文档章节

final finally与finalize三者的区别

t
 thinkerfans
发布于 2014/01/02 23:19
字数 499
阅读 488
收藏 3

    看到这个题目,感觉像是高中题目一样。出题者用心良苦啊,将这个三个联系起来,考察java基本功。在实际中finalize这个用得最少,而其他两个都很熟悉了。但若想流畅的表达三者区别,还行自己好好理一理。

    一、final这个关键字在Java中代表不可改变的,可用来修饰类,方法,变量。

    对class来说,用法如:final class A{}代表类A为终极类,不能被继承,也就没有子类之说与接口实现者之说。

    对method来说,用法如:public final void test(){} 代表此方法不能被重写。

    对argument来说,先看看这个测试类:

public class Test {	
	int i =1;
	final Test t  = new Test(); // Test对象引用变量t不能再指向其他Test对象。但可以通过t来改变此对象中的非常量属性值。	
	public final void test(){
		final int i = 1;//final修饰的变量必须在声明时赋值,且不能在改变。
		t.i++;
	}	
}

    二、finally关键字用在异常处理中,用于处理异常后的清理工作,实际中一般用于关闭文件流,释放资源等操作。

System.out.println("----game start----");
    		try
    		{
    			System.out.println("----try----");
    			return ;
    		}catch(NullPointerException e){
    			System.out.println("----catch----");
    		}finally{
    			System.out.println("----finally----");
    		}		
    		System.out.println("----game over----");

打印结果:

----game start----
----try----
----finally----

    三、finalize方法,为Object基类自带方法,在实际中还没用上,在垃圾回收之前由这个方法进行清理工作,重写Object的这个方法自定义整理工作。

public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub	
		for(int i=0;i<6;i++){
			System.gc();
			Test t = new Test();			
		}
		System.gc();// 若注释此语句,则只打印0-4,这就是Java垃圾回收机制的一个简单验证。
	}

	static int count;

	protected void finalize() throws Throwable {
		// TODO Auto-generated method stub
		super.finalize();
		System.out.println("-----------finalize----------"+count++);
	}		
}

    打印如下:

-----------finalize----------0
-----------finalize----------1
-----------finalize----------2
-----------finalize----------3
-----------finalize----------4
-----------finalize----------5 //


© 著作权归作者所有

共有 人打赏支持
上一篇: &与&&的区别
下一篇: 2013到2014年
t
粉丝 7
博文 70
码字总数 28512
作品 0
深圳
私信 提问
【Java】疯狂Java基础(二)——final, finally, finalize 的区别

一、前言 这次说说final、finally、finalize这三者的区别,其实对这三者有了解的程序员,基本都知道,他们三个之间没有毛线关系。就是因为名字相似,其他的什么也没有。 二、final final可以...

kisscatforever
03/29
0
0
Java深究之final、finally、finalize三者的区别

在java中final、finally、finalize三者在写法上很相近,但是实际含义和作用却是相差甚远。本文主要是来深层的研究下这三者的用法以及之间的区别 1.final 属性:java中的关键字,修饰符 作用:...

MaxBill
06/29
0
0
【J2SE】final、finalize、finally区别

final、finalize、finally这三个虽然长得很像,但差别还是很大的。final为关键字,finalize()为Object类中的方法。finally为区块标识,用于try catch中。 一、final关键字 用于以下四个地方:...

qq_26545305
2017/10/19
0
0
JAVA final finally finalize区别

简单区别: 中等区别: 虽然这三个单词在Java中都存在,但是并没有太多关联: final:java中的关键字,修饰符。 1.如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被...

qq22734179
2014/03/21
0
0
[CareerCup] 14.3 Final Finally Finalize 关键字比较

14.3 What is the difference between final, finally, and finalize? 这道题考察我们Java中的三个看起来很相似的关键字final,finally和finalize。 别看它们三长的很像,但是完全不是一回事...

机器的心脏
2017/12/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
5
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
3
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
今天
4
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部