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工具,当格式化代码的时候,就自动取消了所有的静态导入,变成使用类名调用.

版权声明:
作者:yfeer
链接:https://www.yfeer.com/589.html
来源:个人编程学习网
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>