java final static 与final 修饰变量的区别
2015-03-16 20:54
507 查看
1.import java.util.Random;
2.
3.//这个例子想说明一下static final 与 final的区别
4.public class StaticAndFinalTest {
5.
6. private static Random rand = new Random(47); //47作为随机种子,为的就是产生随机数。
7.
8. private final int a = rand.nextInt(20);
9.
10. private static final int B = rand.nextInt(20);
11.
12. public static void main(String[] args) {
13. StaticAndFinalTest sf = new StaticAndFinalTest();
14. System.out.println("sf : " + "a=" + sf.a);
15. System.out.println("sf : " + "B=" + sf.B);
16. System.out.println("------------------------------");
17. StaticAndFinalTest sf1 = new StaticAndFinalTest();
18. System.out.println("sf1 : " + "a=" + sf1.a);
19. System.out.println("sf1 : " + "B=" + sf1.B);
20. }
21.
22.}
运行结果:
sf : a=15
sf : B=18
--------------
sf1 : a=13
sf1 : B=18
可以看到,在sf和sf1对象中,a的值不是唯一的,但B的值是不会通过创建sf1对象而改变。这是因为它是static,在装载时已被初始化,而不是每次创建新对象时都初始化。
2.
3.//这个例子想说明一下static final 与 final的区别
4.public class StaticAndFinalTest {
5.
6. private static Random rand = new Random(47); //47作为随机种子,为的就是产生随机数。
7.
8. private final int a = rand.nextInt(20);
9.
10. private static final int B = rand.nextInt(20);
11.
12. public static void main(String[] args) {
13. StaticAndFinalTest sf = new StaticAndFinalTest();
14. System.out.println("sf : " + "a=" + sf.a);
15. System.out.println("sf : " + "B=" + sf.B);
16. System.out.println("------------------------------");
17. StaticAndFinalTest sf1 = new StaticAndFinalTest();
18. System.out.println("sf1 : " + "a=" + sf1.a);
19. System.out.println("sf1 : " + "B=" + sf1.B);
20. }
21.
22.}
运行结果:
sf : a=15
sf : B=18
--------------
sf1 : a=13
sf1 : B=18
可以看到,在sf和sf1对象中,a的值不是唯一的,但B的值是不会通过创建sf1对象而改变。这是因为它是static,在装载时已被初始化,而不是每次创建新对象时都初始化。
相关文章推荐
- 66 Java final 修饰基本类型变量和引用类型变量的区别
- JAVA中static修饰成员变量时 和 不修饰成员变量时的区别 如下面的两个例子 的区别 为什么下面的是错误的
- Java学习疑点(2)--被static修饰的静态变量与实例变量之间生命周期的区别
- Java - Static和Final修饰类属性变量及初始化
- java的修饰引用变量的final和C++的const区别真的很大
- private final static ×× 和private static final xx 两者修饰变量的区别
- java中,final 修饰的String 变量与未修饰的String变量的区别
- Java中的abstract,static,final修饰符
- java的final和static的区别
- static修饰全局变量 局部变量和函数时候的区别
- Java中非final的static变量的命名
- Java语言中synchronized 修饰在 static方法和 非static方法的区别
- [java]final修饰变量
- JAVA interface 声明的interface variable (接口变量,也可称成员变量)是public static final
- Java接口中的成员变量为什么必须是public static final?
- 关于static和final修饰类的属性变量以及变量的初始化
- Java中final和static对修饰类、方法、属性的总结
- java interface 中的变量为什么只能是 public static final
- Static和Final修饰类属性变量及初始化
- 用Java 反射机制修改类的pravite final static 变量