码迷,mamicode.com
首页 > 编程语言 > 详细

二、Java基础之final关键字

时间:2017-01-08 22:23:36      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:tabs   优化   nal   提高   string类   声明   运行   ble   引用类型   

final变量:

final修饰的变量(成员变量或局部变量),即常量,只能赋值一次,不能再次修改。

final成员变量要么在声明时赋值,要么在构造函数里赋值。

如果变量为引用类型,变量的引用不能修改,但是引用指向的内容是可以被修改的。

 

final方法:

final修饰的方法不能被子类重写

 

final类:

final修饰的类不能被继承。

最典型的例子:String类。因为String是immutable的,所以不能允许其他类继承String,否则其子类会轻易的将其改为mutable。详细参考:https://www.zhihu.com/question/31345592

 

深入理解final:

  • final修饰的常量在编译期间会放到常量池中。举例如下:
    String a = "hello2";
    final String b = "hello";
    String c = "hello";
    String d = b+2;
    String e = c+2;
    //编译期b是常量,d会直接被编译器优化为hello2
    System.out.println((a == d));//true
    //由于b不是常量,编译期不会被优化,在运行时创建新对象
    System.out.println((a == e));//false
  • final修饰的方法,JVM可能会将其转为内联调用而提高运行效率。
  • final关键字是保证对象不能被修改,static关键字是保证全局唯一。
  • final参数的作用仅仅是让调用方法体内不能重新赋值传参。

二、Java基础之final关键字

标签:tabs   优化   nal   提高   string类   声明   运行   ble   引用类型   

原文地址:http://www.cnblogs.com/bongQ417/p/6036263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!