final关键字

1、final关键字的常见用法

  • final关键字是一个关键字,表示是最终的,不可变的。
  • final关键字修饰的类无法被继承。
  • final关键字修饰的方法无法被重写覆盖。
  • final关键字修饰的变量一旦赋值以后,不可重新赋值。【不可二次赋值】
  • final关键字修饰的实例变量必须手动赋值,不能采用系统的默认值。【系统默认值不可修改】
  • final关键字修饰的实例变量是不可变的,这种变量一般和static联合使用,被称为“常量”。

1.1、final关键字修饰实例变量

java语言规定实例变量使用final关键字修饰之后,必须手动赋值,不能采用系统默认值。

以上语法的解释分析如下:

  • 首先我们了解实例变量属于成员变量,如果不进行初始化处理,那么系统将会默认赋值为【0值】,而恰好经过final关键字修饰过后的变量一旦被赋值以后将无法进行重新赋值。这就意味着实例变量在还未初始化时,其值已经固定不变为【0值】,这样的做法是不合适的,因此便有了以上这个语法。

若是想对final修饰的实例变量进行赋值的话有什么方法吗?

  • 方法一:按照语法规则在定义时进行手动赋值
final int age = 10; 
  • 方法二:先定义,再在构造方法内进行初始化赋值
final int age;
public finalTest(){
	this.age = 10;
}

分析:从本质上看,此两种方法是一样的,因为都是在构造方法执行的过程中给实例变量赋值。因为方法一中的age也必须要在对象创建后才存在的,只有new了对象才能谈实例变量。因此它和方法二中的age的产生时刻是一致的,并且赋值也是一致的。因此这两种方法本质就是一种方法。

1.2、final关键字修饰引用

final关键字修饰引用一旦指向某一个对象之后,不能再指向其他对象了。

分析:

其实这一点也很好理解,当一个 被final修饰的引用(变量),它指向了一个对象之后,也就是说,这个引用已经保存了一个内存地址了,此时若让此引用去保存其它地址,相当于对一个final修饰的关键字进行了重新赋值。这显然是不合法的。

实例:

//创建对象1
User u = new User(10);//引用u中已经保存了一个地址0x1234
//又创建了一个新的User对象
//程序执行到此处,引用u中之前的地址(0x1234)将被重新覆盖,其指向的对象已变成垃圾数据,等待垃圾回收器的回收。
u = new User(23);

final User user = new User();
//user = new User(22);//final修饰的引用一旦指向某个对象后,不能再指向其他对象。

1.3、final修饰实例变量与static联用称常量

常量的语法格式:

public staic final 类型 常量名 =

java命名规范中,所有的常量的名字全部大写,并且单词间用下划线连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值