![深入浅出Java编程](https://wfqqreader-1252317822.image.myqcloud.com/cover/969/44509969/b_44509969.jpg)
6.2 导入包
import关键字用于导入另一个类或者导入一个包下的所有类。import关键字必须声明在package关键字与class类声明之间,且可以多次使用import导入不同的类。
如果两个类在同一个包下,则不用import导入即可使用。
第一个类:
【文件6.2】Hello.java
1. package cn.one; 2. public class Hello{ 3. }
第二个类:
【文件6.3】World.java
![](https://epubservercos.yuewen.com/A51239/23721640201031406/epubprivate/OEBPS/Images/Figure-P65_35772.jpg?sign=1738824587-D18f5pV0qlhfeCMMPPkOcMk28d7eRB7M-0-d0499b6cd3ff1d76b07d434c7f64f10d)
在上例的代码中,由于Hello类与World类在同一个包中,所以在World.java的第3行中可以直接使用Hello类。
如果两个类在不同的包下,则必须使用import关键字导入才可以使用。
第一个类:
【文件6.4】Hello.java
1. package cn.one.a; 2. public class Hello{ 3. }
第二个类:
【文件6.5】World.java
![](https://epubservercos.yuewen.com/A51239/23721640201031406/epubprivate/OEBPS/Images/Figure-P65_5538.jpg?sign=1738824587-PsJQRVdUdeegg4nqPrzzk0zsPUMIQo9y-0-7a4faf7e00deeca87a0681bb0f706491)
在上面的代码中,Hello类与World类不在同一个包下,所以当World在使用Hello类时必须导入。第5行就是导入Hello类的语句。
可以使用*(星)导入某个包下的所有类,但并不包含这个包下子包中的类:
第一个类:
【文件6.6】First.java
1. package cn.one; 2. public class First{ 3. }
第二个类:
【文件6.7】Second.java
1. package cn.one; 2. public class Second{ 3. }
第三个类:
【文件6.8】Third.java
1. package cn.one.a; 2. public class Third{ 3. }
第四个类要使用First和Second类,可以使用*导入one包下的所有类,但并不包含one下子包a中的类。
【文件6.9】Fourth.java
![](https://epubservercos.yuewen.com/A51239/23721640201031406/epubprivate/OEBPS/Images/Figure-P66_5695.jpg?sign=1738824587-ZQ9jWoUC02SvnXWrSkQPCyBy4gu2PgtS-0-c3960eeb4d32ca56bd119b69b9f358c6)
在上面的代码中,第2行直接导入了cn.one.*,即cn.one包下的所有类,所以可以在第4、5行直接使用First和Second类,但是第6行并没有导入,因此,如果去掉注释语句则会编译报错。建议使用哪一个类,就导入哪一个类。即将上面的代码修改成:
【文件6.10】Fourth2.java
![](https://epubservercos.yuewen.com/A51239/23721640201031406/epubprivate/OEBPS/Images/Figure-P66_5696.jpg?sign=1738824587-jcUeMB0XP50JX6cA3Sz7VLJuA2ZBiSmi-0-66519450632908eb07891e81a7d76934)
第2、3行并没有使用*,而是指定导入的具体类。
在Java中有一个java.lang包,用于保存经常被使用的类。这个包也是被导入了所有类中的。如以下代码,由于已经默认导入了java.lang.*,因此没有必要再做import java.lang.*。
【文件6.11】One.java
1. import java.lang.*; 2. public class One{ 3. }
正是因为java.lang包是默认被导入的,所以像String、Integer这样的类可以在项目中直接使用。因为这些类都在java.lang包下。以下是java.lang包下的部分类,大家可以通过查看API的方式获取这个包下的所有类,具体类的列表如图6-4所示。
![](https://epubservercos.yuewen.com/A51239/23721640201031406/epubprivate/OEBPS/Images/Figure-P67_5721.jpg?sign=1738824587-hrn3magsALigOrX31BdYyKwiaOLv78Oc-0-f7e6aa005e20f07896a9a7920a9515e1)
图6-4