Java 中的 String 类是一个 final 类。
一、final 关键字的基本用法
在 Java 中,final 关键字可以用来修饰类、方法、变量。
1. 修饰类
当用 final 修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用 final 进行修饰。final 类中的成员变量可以根据需要设计为 final,但是 final 类中的所有成员方法都会被隐式的指定为 final 方法。
所以,除非这个类在以后不会被用来继承或者处于安全的考虑,尽量不要将类设计成 final 类。
2. 修饰方法
“使用 final 方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的 Java 实现版本中,会将 final 方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的性能提升。在最近的 Java 版本中,不需要使用 final 方法进行这些优化了。”
所以,只有在想明确禁止该方法在子类中被覆盖的情况下才将方法设置为 final 的。
3. 修饰变量
修饰变量是 final 用的最多的地方。
对于一个 final 变量,如果是基本数据类型的变量,则其数值一旦在初始化后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
二、深入理解 final 关键字
1. 类的 final 变量和普通变量有什么区别?
当用 final 作用于类的成员变量时,成员变量必须在定义时或者构造器中进行初始化赋值,而且 final 变量一旦被初始化赋值之后,就不能再被赋值了。
当 final 变量是基本数据类型以及 String 类型时,如果在编译期间就能知道他的确切值,则编译器会把它当做编译期常量使用。也就是说在用到该 final 变量的地方,相当于直接访问这个常量,不需要在运行时确定。但是只有在编译期能确切知道 final 变量值的情况下,编译器才会进行这样的优化。
2. 被 final 修饰的引用变量指向的引用对象的内容可变吗?
可以
3. final 和 static
很多时候会容易吧 static 和 final 关键字混淆,static 作用于成员变量用来表示只保存一份副本,而 final 作用是用来保证变量不可变。
4. 关于 final 参数问题
“当你在方法中不需要改变作为参数的对象变量时,明确使用 final 进行声明,会防止你无意的修改而影响到调用方法外的变量” —— 这句话是不对的。
因为 java 参数传递是值传递,基本类型达不到这样的效果,引用类型可改变实例的内容,所以也不行
https://www.cnblogs.com/dolphin0520/p/3736238.html
今天的文章final关键字的作用_final字号的含义分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/54108.html