关于final赋值问题

关于final赋值问题

	 final static int amig;
	
	{
		 amig=2;
	}

加了static  在构造里赋值会报错:The final field Manage.amig cannot be assigned  为什么?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,The final field Manage.amig cannot be assigned无法为final的字段amig赋值。

这里查看同学的贴出的代码,是将static和final修饰的变量的赋值用在了构造代码块中,这在java语法中是不允许的,因为static  final修饰的变量是作为一个全局的不可修改的变量,这个变量是会随着类的加载而产生。

但是构造代码块是在创建对象时被调用,每次创建对象都会调用一次,但是优先于构造方法执行。也就是说,如果不实例化对象,构造代码块是不会执行的。

综上所述,一个static  final修饰的变量不能在构造代码块中被赋值,例如:

http://img1.sycdn.imooc.com/climg/5e71e52a093a936304040169.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师