final关键字

  • final修饰的成员变量一旦有了初始值,就不能被重新赋值,而且必须由程序员显示地指定初始值。
  • final修饰的引用类型变量也不能被重新赋值,但可以改变引用类型变量锁引用对象的内容,例如:
public static void main(String[] args) {
    final int[] iArr = {5, 6, 12, 9};
    // 对数组元素进行排序,合法
    Arrays.sort(iArr);
    // 对数组或者数组元素赋值,非法
    iArr[2] = 8;
    iArr = null

    final Person p = new Person(45);
    // 改变age实例变量,合法
    p.setAge(23);
    // 对p重新赋值,非法
    p = null;
}

对于一个final变量,只要满足三个条件,这个final就相当于一个直接量:
1. 使用final修饰符修饰
2. 在定义该final变量时指定了初始值
3. 该初始值可以在编译时就被确定下来

public static void main(String[] args) {
    // 下面定义了4个final“宏变量”
    final int a = 5 + 2;
    final double b = 1.2 / 3;
    final String str = "疯狂" + "Java";
    final String book = "疯狂Java讲义:" + 99.0;
    // 下面的book2变量的值因为调用了方法,所以无法在编译时被确定下来
    final String book2 = "疯狂Java讲义:" + String.valueOf(99.0);

    System.out.println(book == "疯狂Java讲义:99.0");// true
    System.out.println(book2 == "疯狂Java讲义:99.0");// false
}
  • final修饰的方法不可被重写。
  • final修饰的类不可以有子类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值