Java------ final 关键字

一、什么是 final 关键字

              final 字面意思是:不可变的,不可更改的;

              所以从字面代入进 java 中可以得到一个结论:final 关键字在进行修饰 java 程序时也不会变成不可更改的状态,但是值得注意的是,final 关键字在修饰不同的 java 程序会得到什么样的结果呢?

二、final 关键字的用法 

        1、fianl 关键字是否可以修饰基本数据类型,如果可以,那么被修饰的变量有哪些改变?

              可以,被 fianl 关键字所修饰的基本数据类型会变为不可更改状态,无法重新赋值,所以这里就引申出了一个重要的点: 在进行定义一个被 final 修饰的变量时要对其直接手动初始化赋值,如果没有这样操作,其后果是系统自动初始化,定义的变量变为一个垃圾值;

 1 public class Test33 {
 2     
 3     final int y = 1; // 手动初始化赋值,赋值后的变量无法更改
 4     
 5     public static void main(String[] args) {
 6 
 7             final int x = 2;
 8             System.out.println(x);
 9             // x = 3;  // 出现错误,x 值不允许重新赋值
10     }
11 }    
View Code

         2、fianl 关键字是否可以修饰普通方法和构造方法,如果可以,那么被修饰的方法有哪些改变?

               final 关键字只能修饰普通方法,无法修饰构造方法,但可以修饰构造方法中的变量。其内容可以重新赋值;而构造方法中被修饰的变量是无法被更改的。

 1 public class Test33 {
 2     
 3     public static void main(String[] args) {
 4         
 5         Test33 t = new Test33(1);
 6         t.fun();  // 被 final 修饰过的普通方法,其内部的值可以被改变(string 和 包装类除外)
 7     }
 8     
 9     final public void fun () {
10         int i = 1;
11         // System.out.println(i);
12         i = 2;
13         System.out.println(i);
14     }
15     public Test33(final int a){
16         int i = a;
17         // a = 3;  错误,无法重新再赋值,final 可以修饰构造方法内的变量,且修饰后无法更改
18         System.out.println(i);
19     }
20 }
View Code

         3、final 关键字与 static 关键字的融合:

               final 与 static 两者同时修饰一个基本数据类型变量,其结果是这个变量变成常量,而且这个常量的标识符一定要大写且两个单词之间要加_;

        格式:final static int Max_i = 1;

         4、final 关键字是否可以修饰引用数据类型,如果可以,那么被修饰的引用数据类型会发生什么改变?

               final 可以修饰引用数据类型,但是修饰后的引用数据类型其地址无法在更改,但其内容可以重新赋值。

         5、final 关键字是否可以修饰类,如果可以,那么被修饰的类会发生什么改变?

               可以,被 final 修饰的类可以继承其他类,但其本身无法被其他类继承,也就是说被 final 修饰的类只能作父类,无法作子类

原文地址:https://www.cnblogs.com/evething-begins-with-choice/p/12796959.html