java的final关键字

本文主要讲述java的final关键字和相关细节。

  老韩知识介绍:

vip

  示例代码如下:

 1 public class FinalTest {
 2     public static void main(String[] args) {
 3 
 4     }
 5 }
 6 
 7 /**
 8  * (4) final修饰类时,不能被继承
 9  */
10 final class A {
11     private String name;
12     /**
13      * (1) final修饰成员变量,不能修改
14      */
15     public final int id =100;
16 
17     public void updateId(){
18 //        id = 104;
19         System.out.println(id);
20     }
21 
22     /**
23      * (2) final修饰局部变量,不能修改
24      */
25     public void fun(){
26         final int num = 10;
27 //        num = 100;
28         System.out.println(num);
29     }
30 
31     /**
32      * (3) final修饰方法,不能被重写【继承相关】
33      */
34     public final void show(){
35         System.out.println("name: "+name);
36     }
37 }
38 
39 //class B extends A{
40 //    public final void show(){
41 //        System.out.println("name: "+name);
42 //    }
43 //}

  老韩final关键字细节讨论

vip

  2)代码示例如下:

 1 public class FinalDetail {
 2     public static void main(String[] args) {
 3 
 4         System.out.println(new AA().NUM4);
 5     }
 6 }
 7 
 8 /**
 9  * 含有final关键字的变量,赋值方式:
10  * (1) 定义时,赋值
11  * (2) 构造器,赋值
12  * (3) 普通代码块,赋值
13  * (4) 普通方法,赋值
14  */
15 class AA {
16     private final int NUM1 = 10;
17     private final int NUM2;
18     private final int NUM3;
19     public final int NUM4 = getNum();
20 
21     public int getNum(){
22         return 10;
23     }
24 
25     public AA() {
26         NUM2 = 10;
27     }
28     {
29         NUM3 = 10;
30     }
31 }

  3)示例代码如下:

 1 public class FinalDetail01 {
 2     public static void main(String[] args) {
 3         System.out.println(AAA.NUM3);
 4     }
 5 }
 6 
 7 class AAA {
 8     /**
 9      * static的final变量赋值方式:
10      * (1) 定义,赋值
11      * (2) static代码块,赋值
12      * (3) static方法,赋值
13      * 注意,此时final变量是静态变量,不能在构造器赋值。
14      */
15     private static final int NUM1 = 10;
16     private static final int NUM2;
17     public static final int NUM3 = getNum();
18 //    private static final int NUM4;
19 //
20 //    public AAA(){
21 //        NUM4 = 10;
22 //    }
23 
24     public static int getNum(){
25         return 10;
26     }
27 
28     static{
29         NUM2 = 10;
30     }
31 }

vip

  7)代码示例如下:

 1 public class FinalDetail02 {
 2     public static void main(String[] args) {
 3         System.out.println(Aa.NUM);
 4     }
 5 }
 6 class Aa {
 7     public static int NUM = 10;
 8     static {
 9         System.out.println("static的代码块被执行");
10     }
11 }

  运行结果如下:

vip

  在static的NUM加了final关键字,

 1 public class FinalDetail02 {
 2     public static void main(String[] args) {
 3         System.out.println(Aa.NUM);
 4     }
 5 }
 6 class Aa {
 7     public final static int NUM = 10;
 8     static {
 9         System.out.println("static的代码块被执行");
10     }
11 }

  运行结果如下:

  由此可以看出,静态变量,若加了final关键字,在main中使用该静态变量时,无需加载类,直接使用。

 

posted @ 2022-12-20 11:04  zwGitOne  阅读(75)  评论(0编辑  收藏  举报