前两天,群中讨论了几个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();
- }
- }