final、finally、finalize的区别?

  • final
    用于修饰属性、方法和类,修饰的属性不可变,修饰的方法不能被覆盖(重写),修饰的类不能被继承
    final属性:不可变有两种含义:一是引用不变,二是对象不变。final指的是引用不变,它只能初始化时指向的那个对象,而不关心对象内容的变化。
	public static void main(String[] args) {
		final StringBuffer a=new StringBuffer("hello");
		//只是改变对象的内容,没有改变对象的引用
		a.append(" world");
		System.out.println(a);
	}
	运行结果:
	hello world
public static void main(String[] args) {
		final StringBuffer a=new StringBuffer("hello");
		//改变对象a的引用,编译不通过,报错
		a=new StringBuffer("world");
		System.out.println(a);
	}
  • finally
    作为异常处理的一部分,它只能用在try/catch中,并且附带一个语句块,表示这段语句最终一定被执行,常用来释放资源
public static void main(String[] args) {
		
		try {
			int a=1/0;
		} catch (ArithmeticException e) {
			e.printStackTrace();
		}finally {
			//虽然程序运行出现异常,但是finally里面的代码一定会执行		
			System.out.println("一定会被执行");
		}
	}
运行结果:
java.lang.ArithmeticException: / by zero
一定会被执行
	at com.fang.Test.main(Test.java:8)

  • finalize
    是Object类的一个方法,在垃圾回收器执行时会调用被收回对象的finalize()方法,可以重写此方法来实现对其他资源的回收,例如关闭文件。
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读