目的:解释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 修饰的时候,表示它在整个程序里面是唯一的,并且不可以被更改。那么我们就可以认为它是一个常量。(常量习惯性的命名是用大写,如果是多个单词中间用下划线隔开)