问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java 中final static变量为什么要初始化

发布网友 发布时间:2022-04-26 19:13

我来回答

5个回答

热心网友 时间:2023-10-23 01:21

在java中用final修饰符修饰的变量表示不可以被二次赋值,且系统不会给其赋默认值。
如果单纯只是final变量,可以在定义的时候就赋默认值,也可以在构造方法中赋默认值。
但是如果同时用final static 修饰变量,因为static变量属于类而不属于对象,且在调用构造方法之前static 变量就已经被系统给赋默认值。而相应的final static 变量就只能在定义的时候就初始化,否则既无法在构造方法中初始化,系统又不会赋默认值,相当于这个变量被定义出来是毫无用处的。 因此java中final static变量必须初始化。

热心网友 时间:2023-10-23 01:21

举个例子:一、一个属性成员变量为:public int age;(编写完该句意味着虚拟机已经为该成员变量age赋默认值0。int类型默认值为0。也可以直接定义时赋值,如public int age =10;。该age的值可以被赋值或者在构造方法里面进行改变)。
二、public static int age;(该句增加static修饰age,不同的是,加了static表示了该变量为全局变量,且默认取值为0,因为int默认取值为0。也可以进行直接定义时赋值public static int age =10;不同的是该属性不依赖对象、依赖类,本类对象共享一份,和上面一样该age的值一样可以被赋值或者在构造方法里面进行改变)。
三、public final int age;(该句用final单独修饰,表示该成员属性变量age将不会取int类型的默认值,故age没有被初始化,必须在定义的时候进行直接赋值,或者在创建对象的时候使用构造方法对该成员属性变量进行赋值。并且一旦用final定义后,就变为最终变量,值 不可以再被改变!所以,该句代码的正确写法应该是如下两种:1、public final int age = 10;
2、
class Dog{
public final int age;
public Dog(){
int age = 10;

}
}
)。
四、public static final int age;(该句和上面一样,也是age没有被初始化,所以age必须被赋值,不同的是该情况下必须是直接赋值,而不能在构造方法里面进行赋值。正确的写法是:public static final int age = 10;这是因为第一、用final修饰的属性不能够用数据类型的默认值为初始化的值,必须要直接赋值,或者在使用构造方法去创建对象的时候对变量进行赋值。但是,第二、由于被static修饰以后的属性成员变量,该成员变量是在类加载完的时候其值已经被确定了,该值依赖类,并不依赖对象。即使不创建对象它就已经有值了,并且由于被final所修饰不能够用数据类型的默认值,故而只能直接赋值,并且被final所修饰成为了最终变量,不可以改变。故而,由于以上两方面原因,只能是直接赋值。public static final int age = 10;)

热心网友 时间:2023-10-23 01:22

final 的变量 是不可变的 ,类第一次加载时static 变量需要一次赋值,所以两者结合必须要初始化

热心网友 时间:2023-10-23 01:23

被final static 修饰的变量是常量。 尽然是常量,那么就必须有个确定的值才有意义。所以必须初始化。

热心网友 时间:2023-10-23 01:23

static 的变量是编译之前就会定义,所以需要对它进行赋值,finial static 更是如此。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 做市商交易与撮合交易的区别 java final变量为什么一定要初始化 微博里关注谁的照片适合做头像,最好多点,男的 java为什么先要初始化父类成员 黄金交易市场有哪些法则? 我想找一张照片当微博头像!!! 有谁可以吧陈伟霆以前用过的微博头像,发给我,是一个男的动漫,长发 微博头像男生背包背影全身 跪求一张男生的微博头像。要靓的。背景也可以。 农行贷记卡-VISA全球支付卡(EMV金卡)可以在国内使用吗?还有可以取现 农行全球支付visa金卡能在国内使用吗? 梦见去世父母晚上回家与我们兄弟姐妹团聚? 农行全球支付白金芯片卡额度 农行全球支付白金卡是个什么级别 农业银行可以办万事达或VISA卡吗? 梦见兄弟,好兄弟在一起干活? 农业银行全球支付芯片卡适合海淘吗 梦见自己跟弟弟相聚 农行的是什么卡年费收多少 梦见好友相聚,畅谈未来是什么意思? 什么是竞价交易方式?与做市商制度有什么区别和联系? java初始化的 本质是什么 求这个人名字和这个风格头像 做市的交易规则与做市商报价 就是一个男生的微博头像是他自己但是头像又有点模糊看不清楚,但是他人长得还是比较帅 还有他不爱更微博 撮合交易与做市商有什么区别? 请问 这个是不是情头?如果是另一张是怎么样的呀 撮合交易与市商制有什么区别? 撮合交易和做市商都有哪些区别?各自的优缺点是什么 画风突变,张艺兴在节目里竟然“爆粗”,这只小绵羊你喜欢吗? 市场交易与政府交易区别是什么? 微博头像下方的星星标志代表什么?能够证明是本人吗? 内存卡明明没有满,为什么提示SD卡存储空间不足 撮合式交易模式和市商模式有什么区别 做市商交易模式的与撮合制的区别 为什么明明有内存却老是提示空间不足? 股票委托买卖和市价买卖有什么区别啊? 怎样把双眼皮变成单眼皮 双眼皮怎么变单眼皮 双眼皮怎么会变成单眼皮?还能变回来吗?!!!