【发布时间】:2012-09-29 20:30:45
【问题描述】:
我只是想澄清一下。有什么区别 -
private static int STUDENT_AGE = 18;
和
private static final int STUDENT_AGE = 18;
在该领域内?
Jon Skeet 解释为“根本与特定实例无关”,好吧,我想我明白了。那么 final 在这种情况下到底做了什么?
下面的代码不起作用是因为学生年龄被分配为静态最终?这是否意味着根本无法覆盖默认年龄?那么是否可以创建指定年龄而不是默认年龄的构造函数?
private String myName;
private String myAddress;
private int myYearEnrolled;
private String myGender;
private static final int STUDENT_AGE = 18;
public Student(String name, String address, int year, String gender) {
myName = name;
myAddress = address;
myYearEnrolled = year;
myGender = gender;
}
public Student(int age)
{
STUDENT_AGE = age;
}
【问题讨论】:
-
Final 使其保持不变。一旦你声明了 final,你以后就不能再给它重新赋值了。
-
可能我的问题还不够清楚。
-
@vandey 它与
constant不同,常量的值在编译时是已知的。 -
我补充一下,不可以随便设置新值,不管是构造函数还是方法