java中空final静态常量为什么不能在动态语句块中赋值 5
6个回答
展开全部
final 即表示最终的,都是最终的了,你还能说还有其他版本的吗?
因为这是规定,是sun公司规定好了的。
因为这是规定,是sun公司规定好了的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个牵涉到static属性在类中的加载时间和非静态代码块的运行时间;
1. final 修饰的变量只能一次赋值,其后不能改变;
final修饰变量后,可以不用立即赋值,对于static final同时修饰的类变量可以在静态代码块中赋值,对于只有final修饰的类的非静态变量可以在非静态代码块或该类所有构造函数中赋值;
2. 为什么不能在非静态代码块中赋值
类加载的时候会将静态的类变量加载到方法区,该情况下,对于还没有被初始化的static final变量,java认为是有错误的;使用非静态代码块赋值不行的原因是,非静态代码块运行时在对象建立时才运行,晚于类静态变量加载进方法区的时间;
1. final 修饰的变量只能一次赋值,其后不能改变;
final修饰变量后,可以不用立即赋值,对于static final同时修饰的类变量可以在静态代码块中赋值,对于只有final修饰的类的非静态变量可以在非静态代码块或该类所有构造函数中赋值;
2. 为什么不能在非静态代码块中赋值
类加载的时候会将静态的类变量加载到方法区,该情况下,对于还没有被初始化的static final变量,java认为是有错误的;使用非静态代码块赋值不行的原因是,非静态代码块运行时在对象建立时才运行,晚于类静态变量加载进方法区的时间;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主这是最基础的语法知识知识吧, 多看看API吧
final修饰符
final的意思是不可变,他可以修饰类、字段、方法。修饰类后类不能被扩展(extends),也就是不能被继承。修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。修饰方法后该方法不能被改变,也就是重写。
具体请看:http://www.cnblogs.com/snowdrop/articles/2143194.html
final修饰符
final的意思是不可变,他可以修饰类、字段、方法。修饰类后类不能被扩展(extends),也就是不能被继承。修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。修饰方法后该方法不能被改变,也就是重写。
具体请看:http://www.cnblogs.com/snowdrop/articles/2143194.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有为什么,这是java语言自有的规则,所有编程语言都有自己的规则
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询