java中import导入包的详解:
java中在类中实现某些功能的时候,有可能需要调用其他的类,或者其他类中的对象,或者其他类中的方法,或者其他某些特定的方法,这里需要调用的对象(或者是类)有可能跟该类文件不在一个包里,这个时候,就需要导入相应的包(包中相应的类,甚至包括相应的对象),才可以实现代码的正常运行。
public class Test {
public static void main(String[] args) {
//cn.pro06.oo.User user = new cn.pro06.oo.User() ;
User user=new User();
java.util.Date date = new java.util.Date();
System.out.println(Math.PI);
System.out.println(PI);
}
在以上代码中,我们调用了User这个类,而User这个类没有在当下这个类中定义,也没有和当下这个类在同一个包中,这个时候就需要跨包调用,那么就必须在代码中导入相关的包,以我自己的代码为例,我需要通过import
为User这个类导入相应的包,代码为
import cn.pro06.oo.User;
这是比较标准的做法:直接在代码中表明导入了该类(比如这里的User类)
或者,我们也可以
import cn.pro06.oo.*;
这种做法相比于上一种,把指定的类名换成了符号
*
可以一次性导入一个包中所有的引用类,只是会降低编译速度,但是不影响运行速度。
在前面给出的示例代码中,我们还调用了date;在这里,date包含在java自身所带的包里,我们需要导入这个包,但是在java自带包里,有两个包都含有date,分别是
import java.util.Date;
import java.sql.*;
这两个包都被导入情况下,date是没法正常运行的。在这里,按照以上导入包代码的写法的话,程序在运行的时候是优先考虑util的,因为import java.util.Date;
中已经精确到Date这个对象了;否则的话,程序是没法正常运行的。或者,我们还可以直接引用date的时候指明其来自哪个包,比如我以上的代码中java.util.Date date = new java.util.Date();
就是这么写的,这样就很好地避免了程序没法识别所调用的date来自哪个包。
我们在调用java语言常用包中一些特殊东西的时候,也可以选择多种调用方法。比如,这里我需要输出圆周率Π的值,我可以这样写:
System.out.println(Math.PI);
这种是直接在调用的时候就指明来自哪个包。
或者,我们可以在代码的main方法之前导入相应的包
import static java.lang.Math.*;
然后调用的时候直接引用System.out.println(PI);
即可。
注意:当我们要通过import导入包的时候,一定要在main方法之前进行导入。
展示本次案例的完整代码,经供参考:
package cn.pro06.hu;
// import cn.pro06.oo.User; //这是比较标准的做法:直接在代码中表明导入了该类(比如这里的User类)
import cn.pro06.oo.*; //这种做法相比于上一种,可以一次性导入一个包中所有的引用类,只是会降低编译速度,但是不影响运行速度
import java.util.Date;
import java.sql.*;
import static java.lang.Math.*;
public class Test {
public static void main(String[] args) {
//cn.pro06.oo.User user = new cn.pro06.oo.User() ; //可以直接在方法中的对象前面指明该对象所在的包
User user=new User();
java.util.Date date = new java.util.Date();
System.out.println(Math.PI);
System.out.println(PI);
}
}