我正在准备 Java SE 7 的 OCA 认证,第一章节是关于 Java 基础,其中提到了静态方法:
静态方法与对象无关,不能使用类的任何实例变量。
在下面的示例中,编译器给我报错:
class MyClass2 {
String a;
public MyClass2() {
}
static void check(){
if (a.equals("TEST"))
return;
}
}
无法将静态引用转换为非静态字段 a。
如果我这样更改类定义:
class MyClass {
String a;
public MyClass() {
// TODO Auto-generated constructor stub
check(a);
}
static void check(String a){
if (a.equals("TEST"))
return;
}
}
一切都运行正常,编译器没有显示任何错误,这很奇怪,因为a
始终是一个实例变量。
a.equals("TEST")
使用方法参数a
,而不是实例字段(具有相同变量名)。构造函数可能会将实例字段传递给方法调用,但对于引用的段落而言这并不重要。 - Tom