永发信息网

Java中final static变量初始化的问题

答案:4  悬赏:40  手机版
解决时间 2021-03-15 07:24
  • 提问者网友:骨子里的高雅
  • 2021-03-14 23:38
Java中final static变量初始化的问题
最佳答案
  • 五星知识达人网友:零点过十分
  • 2021-03-15 01:11
static变量是在类加载的时候初始化

static final常量是对象实例化的时候初始化
public class StaticAndFinalTest {  
     
   private static Random rand = new Random(47); //47作为随机种子,为的就是产生随机数。  
     
   private final int a = rand.nextInt(20);  
     
    private static final int B = rand.nextInt(20);  
  
    public static void main(String[] args) {  
        StaticAndFinalTest sf = new StaticAndFinalTest();  
        System.out.println("sf : " + "a=" + sf.a);  
        System.out.println("sf : " + "B=" + sf.B);  
        System.out.println("------------------------------");  
        StaticAndFinalTest sf1 = new StaticAndFinalTest();  
        System.out.println("sf1 : " + "a=" + sf1.a);  
        System.out.println("sf1 : " + "B=" + sf1.B);  
    }  
  
}运行结果:
sf : a=15 
sf : B=18 
-------------- 
sf1 : a=13 
sf1 : B=18 
可以看到,在sf和sf1对象中,a的值不是唯一的,但B的值是不会通过创建sf1对象而改变。这是因为它是static,在装载时已被初始化,而不是每次创建新对象时都初始化。
追问你证明的单独使用final和static的区别,我问的时static final和static的区别 - -!
而且我的问题是 同样是被static final修饰,为什么基本数据类型被访问时不会触发所属类的初始化,而引用类型会触发;追答static加上去也是这样的
全部回答
  • 1楼网友:三千妖杀
  • 2021-03-15 03:28
和static变yuofyip
  • 2楼网友:煞尾
  • 2021-03-15 02:41
因为常量是不可变的,设置了常量的属性或方法,系统不再会为它提供初始化服务,是给予程序猿自己来设施初始化值的。而没有设置常量的属性或者方法的话,那么系统会默认给他附初始化值
  • 3楼网友:等灯
  • 2021-03-15 01:54
static变量初始值一定要是常量。 static变量中文名叫静态变量。它与普通的变量比起来有如下几个区别: 1)位置:静态局部变量被编译器放在全局存储区.data,所以它虽然是局部的,但是在程序的整个生命周期中存在。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯