前两天,群中讨论了几个Java问题,贴一下:

 假设A类有如下定义,设aA类的一个实例,下列哪些语句调用是错误的。【  

 class A {

int i;

static String s;

    void method1() {   }

    static void method2()  {   }

}   

AA.method1();

BA.method2()

CSystem.out.println(a.i)

Da.method1(); 

题目考查static的用法:类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。简单说,类名调用方法时,只能调用静态方法。对于非静态的方法,需要类对象(实例化)进行调用。

开始不清楚,实际验证了一把。

  1. public class Test {  
  2.  
  3.     int i;  
  4.     static String s;  
  5.     void Method1()  
  6.     {  
  7.         System.out.println("1");  
  8.     }  
  9.     static void Method2()  
  10.     {  
  11.         System.out.println("b");  
  12.     }  
  13.     /**  
  14.      * @param args  
  15.      */ 
  16.     public static void main(String[] args) {  
  17.         // TODO Auto-generated method stub  
  18.  
  19.         Test a = new Test();  
  20. //      Test.Method1();   
  21.         Test.Method2() ;  
  22.         System.out.println(a.i);   
  23.         a.Method1();    
  24.           
  25.     }  
  26. }