Java 中final修饰的成员变量在创建对象时候会不会被附初值?

如上所述
Java 中final修饰的成员变量在创建对象时候会不会被附初值?
我看周志明的jvm说在创建对象时候要给所有的内存空间都要初始化为零值(不包括对象头),我就想如果是final类型的会不会被初始化微零值再进行程序员自己编写的赋值语句呢?那样的话是不是就是两次对final变量赋值了?

9个回答

不会的,jvm是不会给final修饰的变量赋值的,一个最简单的办法,你写一个测试类,测试一下,输出一个final修饰的未赋值变量,你会发现它报错,就说明JVM并没有
对他进行初始化。另外,当发现一个问题,不能确定的时候,首先分析是否可以通过测试的方法进行验证,发现自己实在解决不了或想不通再去百度,百度找不到
在发帖求助,不要遇到问题直接发帖,不会思考,会很可怕。加油

会,比如int初值就是0

应该是不会的,刚才查资料看到说系统不会对final成员进行隐式初始化。

不会,创建对象的时候必须赋初值,且只能赋值一次,否则会报错

final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

看了楼上不同的回答,我默默的去测试了下。

不会,final修饰的成员变量 就是指针的作用应该是 jvm限制了用户的写入数据的权限

系统不会自动赋初值,要自己赋初值,不能改变

不会自动赋值。不赋值会报错。final修饰成员变量,会强制要求赋上值。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问