android 面试准备 10.27 finally

final,finally,finalize的区别?

final:

定义:表示最终的,最后的,意味着就是不可改变的,一旦获取了初始值就不能被改变,就是不能被重新赋值。

使用方法:可用于修饰变量、方法、类。

1.修饰变量时:

(1)成员变量需要在初始化块或者构造器中或者声明变量时对final修饰的变量进行赋值;

(2)修饰类变量(用static修饰的成员变量为类变量),需要在静态初始化块中或者声明变量时对其初始化;

2.方法:final修饰的方法,子类不能进行重写;

3.类:final修饰的类不能被继承,因为继承的时候。

import test.TestHashCode.Person;

public class TestFinal {
	 final String a = "wd";//成员变量
	 final String b;     //成员变量
	 final static int c; //类变量
	 final char d;
	 final Person person;
	
	 //构造方法
	public TestFinal() {
		b = "sdw";
		//对final引用类型变量赋值
		person = new Person(20);
	}
	
	//静态初始化块
	static {
		c= 9;
	}
	//初始化块
	{
		d = 'd';
	}
	
	public final void fianlStaticTest() {
		final String e;
		e = "sdw";
	}
	
	public void name() {
		
	}
	
	private final void test() {
		
	}
	
	public static void main(String[] args) {
		TestFinal testFinal = new TestFinal();
		//对final引用类型变量中的属性赋值,看看会不会改变person
		testFinal.person.age = 100;
		System.out.println(testFinal.a);
		System.out.println(testFinal.b);
		System.out.println(TestFinal.c);
		System.out.println(testFinal.d);
		//非法赋值,因为person是final修饰的,不能被重新赋值
//		testFinal.person = null; 
		System.out.println(testFinal.person.age); //结果:100
	}
}

class subClass extends TestFinal{
	
	//final修饰的父类,子类不能重写
//	public void fianlStaticTest() {
//		
//	}
	
	//父类虽然已经用final修饰,但是他是private的,所以相当于是子类的的一个新方法
	public void test() {
		
	}
	
	@Override
	public void name() {
		// TODO Auto-generated method stub
		super.name();
	}
}

finally:

finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下。

finalize:

https://www.cnblogs.com/Smina/p/7189427.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值