static final值声明时必须给定初值 // final的static变量在类加载的准备阶段就被赋予了给定的值,而且不再发生改变了,位置在方法区 //因为static代码块的执行是在类加载的初始化阶段,所以也不能改变final static变量的值 //static的非final变量可以在static代码块(初始化阶段)改变值,其在准备阶段已经赋过值(对应类型的零值),位置在方法区 //非static的变量,在类加载时并没有生成,它是跟随对象在实例化时在java堆分配资源 // 对象的final变量可以在声明时给定值,也可以在构造函数里赋值,但两者有且只能有一个,否则编译报错 // 前者早于后者,两者都有时后者编译报错
java类变量和对象变量的初始化问题
最新推荐文章于 2022-07-01 13:51:49 发布