再来理解java的static final

来源:互联网 发布:js onload onready 编辑:程序博客网 时间:2024/06/05 12:40

java中没有const关键字,那么怎么实现常量呢?

会想到static final来修饰变量,让这个变量"变成"常量。

那么看下面的代码:

package a;public class MM {static final Stu s = new Stu();public static void main(String[] ss) {s.age = 4;s.name = "test";s = new Stu();// 这里会报错}}class Stu {int age;String name;}

 

这段代码在标记的地方会出错。

其实final关键字的作用仅仅是让这个变量不能再被赋予其他的值【意思是说这个引用不能再引用其他对象】。

上面代码并不能保证s对象内容不变。其实是可以给age和name赋值的。

下面这段代码说明了问题:

package a;public class MM {static final Stu s = new Stu();public static void main(String[] ss) {final Stu stu;stu = new Stu();stu = new Stu();//这里会报错,因为stu前面已经被assign过了,不能再次被assign了}}class Stu {int age;String name;}


其实java程序猿可以自己写代码来实现const关键字的。比如把类的字段都声明为private,然后只提供get方法。

原创粉丝点击