在投递简历后,笔试题目有一道关于import static的题目,
大致如下:
package com.a;
import static com.b.*;
class Test{
public static void main(String[] args){
Integer a = i; //1
Integer b = com.b.A.i; //2
Integer c = b.A.i; //3
Integer d = A.i; //4
}
}
package com.b;
class A{
public static int i = 10;
}
选项(多选):(DE)
A 程序编译通过
B //1编译出错
C //2编译出错
D //3编译出错
E //4编译出错
虽然之前关注过这个知识点,但是并没有详细了解,所以做题的时候心里比较虚,现在回过头来仔细研究一下。
①import static会导入类的静态属性和方法,相当于本类中有了该类的属性和方法,所以可以直接使用i,//1编译通过。B错
②直接使用全类名,//2编译通过。C错
③全类名是com.b.A,漏了com,所以//3编译出错。D对,A错
④就是//4这个地方迷惑了我好久,要注意,静态导入并不会将类本身导入,而是只导入了类的静态属性和方法(非静态的也不能用),所以,并不能通过A.i来获取其静态属性,所以这个地方也会编译出错。E对。
--------------------------------------------分割线-----------------------------------------------------
以下是import static知识的复习:
import static 是jdk1.5之后引入的新特性。
语法:import static 全类名.*;
这样就导入了一个类的所有静态属性和方法。(注意:静态引入的这个类的方法和属性必须是静态的,否则不能使用)
导入之后,就可以直接通过属性名或者方法名来使用了。
比较常见的一个例子就是向控制台打印的语句。
通常,在向控制台输出时,需要写全类名:
System.out.println("输出语句");
但是使用静态引入之后,就可以直接使用out对象的println(String str)方法了。
import static System.out.*;
class Test{
public static void main(String[] args){
out.println("输出语句");
}
}