目的:解释static 、final、static final 的区别 

 

1、加了 final 修饰符,表示这个是最终结果不可被更改的(你尝试改变它的值,编译器就会报错)

 

2、加了 static 修饰符,表示这是 独一无二 的,只有这一个。

 

3、加了 static final 修饰符(static final 位置可以互换),整个程序只有一份并且结果不可以被更改。

 

用代码说明上面的规律  看下面这个代码

package com.xdx97.Testing;

import java.util.Random;

public class Test2 {

    private String name;

    private static Random rand = new Random();
    private  static final Integer AA = rand.nextInt(30);
    private static Integer BB = rand.nextInt(30);
    private final Integer CC = rand.nextInt(30);

    Test2(String name){
        this.name = name;
    }
    public void sout(){
        
        System.out.println(name+"-AA = "+ AA);
        System.out.println(name+"-BB = "+BB);
        System.out.println(name+"-CC = "+CC);
    }

    public static void main(String[] args) {
        Test2 t = new Test2("t");
        Test2 t1 = new Test2("t1");
        t.sout();
        t1.sout();
    }

}

 

打印的结果

 

    1、对象t 和 t1打印的 AA 和 BB 永远相等,但是CC  基本不相等(也可能相等,因为随机数可能随机的同一个数)

 

    2、你可以在方法改变 BB 的值,使其变成你想要的值,但是你无法改变 AA 和 CC 的值因为它们使用了 final 修饰表示最终的值了。

    

    3、不能因为被 final 修饰就认为在编译的时候知道它的值,比如上面的例子是用 Random 来进行赋值的。

 

    4、当我们使用了 static final 修饰的时候,表示它在整个程序里面是唯一的,并且不可以被更改。那么我们就可以认为它是一个常量。(常量习惯性的命名是用大写,如果是多个单词中间用下划线隔开)