background image

   

答 案 :  

 

正确。输出的是 "i = 0"   

。int i 

 

属於 instant variable ( 实例变量,或叫成员变量 

)   

。 instant variable   

有 default value   

。 int   

的 default value   

是 0   

7.下面代码有什么错误
class Something {
    final int i;
    public void doSomething() {
        System.out.println("i = " + i);
    }
}

   

答 案 :  

 

final int i 

 

是个 final 

 

的 instant variable ( 

 

实例变量,或叫成员变量 ) 

 

。 final 的 

instant variable 

 

没有 default value 

 

,必须在 constructor ( 

 

构造器 ) 结束之前被赋予

 

一个明确的值。可以修改为 "final int i = 0;"   

8.下面代码有什么错误

public class Something {
     public static void main(String[] args) {
        Something s = new Something();
        System.out.println("s.doSomething() returns " + doSomething());
    }
    public String doSomething() {
        return "Do something ...";
    }
}

   

答 案 :  

 

 

错。看上去在 main   

里 call doSomething 

 

没有什么问题,毕竟两个 methods 都在同一

 

个 class 

 

里。但仔细看, main   

是 static 

 

的。 static method 

 

不能直接 call non-static 

methods  

 

。 可 改 成

"System.out.println("s.doSomething()   returns   "   + 

s.doSomething());" 

 

。同理, static method 

 

不能访问 non-static instant variable   

9.

 

此处, Something 

 

类的文件名叫 OtherThing.java

里面的代码,如下: