前兩天,羣中討論了幾個Java問題,貼一下:
假設A類有如下定義,設a是A類的一個實例,下列哪些語句調用是錯誤的。【 】
int i;
static String s;
void method1() { }
static void method2() { }
}
A:A.method1();
B:A.method2()
C:System.out.println(a.i);
D:a.method1();
題目考查static的用法:類成員必須通過它的類的對象訪問,但是可以創建這樣一個成員,它能夠被它自己使用,而不必引用特定的實例。在成員的聲明前面加上關鍵字static(靜態的)就能創建這樣的成員。如果一個成員被聲明爲static,它就能夠在它的類的任何對象創建之前被訪問,而不必引用任何對象。簡單說,類名調用方法時,只能調用靜態方法。對於非靜態的方法,需要類對象(實例化)進行調用。
開始不清楚,實際驗證了一把。
- public class Test {
- int i;
- static String s;
- void Method1()
- {
- System.out.println("1");
- }
- static void Method2()
- {
- System.out.println("b");
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Test a = new Test();
- // Test.Method1();
- Test.Method2() ;
- System.out.println(a.i);
- a.Method1();
- }
- }