笔试时遇到的关于import static的问题

在投递简历后,笔试题目有一道关于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("输出语句");
    }

}

 

你可能感兴趣的:(javase)