Java-import语句
当A类和B类不在同一个包中,若A类需要使用到B类,此时就得让A类中去引入B类.
注意:在这里演示import的时候,因为没有学习public的原因以及Editplus工具的原因,我不会演示去引入自定义带package的类.
我们演示,咱们之前学习过的 数组的工具类:Arrays类,该类在java.util包中.
Arrays类的全限定名:java.util.Arrays
-------------------------------------------------------------------------
没有使用import之前,操作不在同一个包中的类,得使用全限定名来操作.
intl[] arr = new int[]{11,-2,3,-4,0,6}; //打印数组 String ret =java.util.Arrays.toString(arr); System.out.print(ret); //排序 java.util.Arrays.sort(arr); //打印 ret = java.util.Arrays.toString(arr); System.out.pring(ret);
解决方案: 使用import语句,直接把某个包下的类导入到当前类中.
语法格式: import 需要导入类的全限定名;
此后,在本Java文件中,只需要使用类的简单名称即可..
import java.util.Arrays; import java.util.Set; import java.util.List;
上述代码,表示分别引入了java.util包下的Arrays类,Set类,List类.
问题:如果我们还需要继续引入java.util包中其他的类,我们还得提供N个import语句,要写很多次,不爽.
解决方案:使用通配符(*).
import 类的全限定名; 只能导入某一个类.
import 包名.子包名.*; 表示会引入该包下的所有的在当前文件中使用到的类.
import java.util.*; 此时的*表示类名.
在Eclipse工具中,即使我们使用了通配符*,在格式化代码的时候,也会转换为N条import语句.
注意: 编译器会默认找java.lang包下的类. 但是却不会去找java.lang的子包下的类.
比如:java.lang.reflect.Method类.
此时我们也得使用import java.lang.reflect.Method.
静态导入(static import):
int[] arr = new int[]{11,-2,3,-4,0,6}; //打印数组 String ret = Arrays.toString(arr); System.out.print(ret); //排序数组 Arrays.sort(arr); //打印 ret = Arrays.toString(arr); System.out.print(ret);
在上述代码中,每次使用Arrays类中的静态方法,即使我们使用了import语句,但是每次都需要使用Arrays类名去调用静态方法.
我就觉得不爽, 我期望:我能把Arrays类中的静态成员作为自己的静态成员一样调用.
解决方案:
语法格式:
import static 类的全限定名.该类中的static成员名;
//把java.util.Arrays类中的静态方法sort导入到StaticImportDemo类中 improt static java.util.Arrays.sort; import static java.util.Arrays.binarySearch;
import static 类的全限定名.*;此时的*表示当前类的任意使用到的静态成员.
--------------------------------------------------------------------------------------------------------------------------------
通过反编译工具,其实所谓的静态导入也是一个语法糖/编译器级别的新特性.
在实际开发中,我们不使用静态导入,因为如此,分不清某一个静态方法或字段来源于哪一个类.
Eclipse工具,当格式化代码的时候,就自动取消了所有的静态导入,变成使用类名调用.
共有 0 条评论