Java-关键字final详解(public static final)

Jayne ·
更新时间:2024-11-13
· 776 次阅读

一、final修饰类

B类继承A类,相当于对A类的功能进行扩展,如果不希望对A类进行扩展,可以给A类加final关键字,这样的话,A类就无法继承了。

源代码中String就是没有子孙的

 结论:final修饰的类无法被继承

二、final修饰的方法

 所以final修饰的方法无法覆盖和重写。

三、final修饰的变量 (1)局部变量

无法为最终变量进行赋值了。

final修饰的变量只能赋一次值。

final修饰的变量一旦赋上值就不能再重新赋值了。

(2)fina修饰的变量如果这个变量是一个"引用"会怎么样?

解析:s2里面最初分配了0x123,然而你再给final进行赋值就不行了,因为final修饰的变量只能赋一次值。

final修饰的引用:该引用只能指向1个对象,并且它只能永远指向该对象。并且该方法执行过程中,该引用指向该对象之后,该对象不会被垃圾回收期回收,直到当前方法结束,才会释放空间。

对象不能修改,里面的数据能修改吗?

可以的,虽然指向的对象不能修改,但是对象里面的数据可以修改。

 内存图

 

(3)fianl修饰实例变量 

变量age没有初始化,所以sun公司,由final修饰的实例变量,系统不管赋默认值,要求程序员必须手动赋值。

 

只要赶在系统赋默认值之前赋值就行。

系统赋默认值是在构造方法执行的时候赋值。

所以这样也是可以。

总结:final修饰的实例变量,系统不负责赋默认值,赋值要么在变量后面写上,要么在构造方法里面写。

四、final修饰常量 public class FinalTest04{ public static void main(String [] args){ } } class Chinese{ //身份证号 String idCard; //姓名,对象不同姓名不一样 String name; //国家的值是一个固定值:“中国” //实例变量在堆中,一个对象一份。100个对象100份。 //实例变量既然使用final修饰了,说明该实例变量不会随着对象的变化而变化。 //该实例变量前面应该添加:static关键字,变为静态的,存储在方法区 static final String country="中国"; }

最终结果:

    static final联合修饰的变量称为"常量"。常量名建议全部大写,每个单词之间采用下划线衔接。

常量:实际上常量和静态变量一样,区别在于:常量的值不能变,常量和静态变量,都是存储在方法区,并且都是在类加载时初始化。

五、总结

(1)final修饰的类无法继承

(2)final修饰的方法无法覆盖

(3)final修饰的变量只能赋一次值。

(4)final修饰的引用一旦指向某个对象,则不能再重新指向其他对象,但该引用指向的对象内部的数据时可以修改的。

(5)final修饰的实例变量必须手动初始化,不能采用系统默认值。

(6)final修饰的实例变量一般都和static联合使用,称为常量。

赵晓东-Nastu 原创文章 175获赞 38访问量 4万+ 关注 私信 展开阅读全文
作者:赵晓东-Nastu



JAVA final public 关键 static

需要 登录 后方可回复, 如果你还没有账号请 注册新账号