java中空final静态常量为什么不能在动态语句块中赋值 5

 我来答
hitzsf
推荐于2018-05-09 · TA获得超过2060个赞
知道大有可为答主
回答量:1741
采纳率:78%
帮助的人:1162万
展开全部
静态常量是属于类的属性,只有有了类,就有了这儿常量,不能变动的,所以就不能再动态语句里赋值使用了,只能在初始化赋初值,静态块中执行,而动态语句基本都是方法,是在堆中的,地址、内容属于可变化的,两者属性不一致
a815952553
2014-09-06 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:65万
展开全部
final 即表示最终的,都是最终的了,你还能说还有其他版本的吗?
因为这是规定,是sun公司规定好了的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友39e63c1
2016-10-07
知道答主
回答量:6
采纳率:0%
帮助的人:4682
展开全部
这个牵涉到static属性在类中的加载时间和非静态代码块的运行时间;
1. final 修饰的变量只能一次赋值,其后不能改变;
final修饰变量后,可以不用立即赋值,对于static final同时修饰的类变量可以在静态代码块中赋值,对于只有final修饰的类的非静态变量可以在非静态代码块或该类所有构造函数中赋值;
2. 为什么不能在非静态代码块中赋值
类加载的时候会将静态的类变量加载到方法区,该情况下,对于还没有被初始化的static final变量,java认为是有错误的;使用非静态代码块赋值不行的原因是,非静态代码块运行时在对象建立时才运行,晚于类静态变量加载进方法区的时间;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
落寞如尘012
2014-09-03 · TA获得超过194个赞
知道小有建树答主
回答量:68
采纳率:0%
帮助的人:70.8万
展开全部
楼主这是最基础的语法知识知识吧, 多看看API吧

final修饰符
final的意思是不可变,他可以修饰类、字段、方法。修饰类后类不能被扩展(extends),也就是不能被继承。修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。修饰方法后该方法不能被改变,也就是重写。

具体请看:http://www.cnblogs.com/snowdrop/articles/2143194.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞花岁月2007
2014-09-05 · TA获得超过377个赞
知道小有建树答主
回答量:505
采纳率:78%
帮助的人:334万
展开全部
没有为什么,这是java语言自有的规则,所有编程语言都有自己的规则
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式