final 关键字

final 关键字Java中的String类是一个final类。一、final关键字的基本用法在Java中,final关键字可以用来修饰类、方法、变量。1.修饰类当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。

大家好,欢迎来到IT知识分享网。final 关键字

 

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 参数传递是值传递,基本类型达不到这样的效果,引用类型可改变实例的内容,所以也不行

 

 

 final 关键字

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30998.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信