重新认识final关键字

        学习java很长时间了,今天重新看了final关键字,发现其实自己掌握的还是不全面,下面就来看一下这个关键字都用在什么地方。

1.final修饰数据:对于基本类型的数据,final使得其数值不变,而对于对象类型的引用,final使得引用不变,这句话的                               意思是对于引用的对象,final使得此对象指向地址不可改变,但是地址中的值可以改变。

对于这句话,我们可以用程序来验证:

public class Test{
	int i=9;
}
public class Test1 {
	
	public static void main(String[] args){
		final Test test = new Test();
		//test = new Test1();
		test.i = 3;
		System.out.println(test.i);
	}
}
我们会发现输出的i的值改变了,但是如果写出代码test = new Test1();,编译器就会报错,告诉你不能改变final修饰的变量。

如此我们会发现,对象test的地址并没有改变,但是值却改变了。

2.空白final :所谓空白final是指被声明为final类型,但是有没有给定初始的值,这使得程序使用final时又多了一些灵                         活性,即可以自己初始化,但是这种变量不像普通变量编译器会给类变量一个初始的值,他是通过用户                         来指定变量初始的值。
3.final参数:无法在方法中更改参数引用所指向的对象。(同样,也可以改变对象的成员变量)。

4.final方法:允许你重写但是不允许你重载。final修饰方法,可以讲方法锁定,以防继承类修改他的含义,保持在继                       承中使方法保持不变。

使用final修饰的第二个原因是效率。如果将一个方法指明为final类型的,那么便一起将针对该方法的所有调用都转为内嵌调用。当编译器发现一个final类型的方法时,他会跳过插入程序代码这种正常的方法转而执行方法调用机制。并且已方法体中的实际代码的副本来代替方法调用。,这消除了方法调用的开销(特别是循环的时候)。

5.final类:当你将一个类声明为final类型的,那说明你不打算继承该类,并且也不允许别人这样做。由于final类禁止继承,所以这相当于final类中所有的方法都隐式制定成final的,因为你无法重载他。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值