Java 基础系列(五) --- 浅谈Java中包的理解和使用
包
1 为什么要用包?2 导入包2.1 使用import关键字导入包2.2 使用import导入静态成员
3 注意点
1 为什么要用包?
在Java的基础学习过程中我们可以发现,我们每次定义一个类,通过Java编译器进行编译之后,都会生成一个.class的文件(如下图1.1所示),但如果以后进入企业或者是做一个大型项目时,你写了一个student类,你的同学也写了一个student类,类名就会变得很多,这时很容易产生冲突,于是Java提供了一种管理类文件的机制,就是类包. 包是组织类的一种方式,其目的是保证类的唯一性. [ 图1 .1 ]
2 导入包
2.1 使用import关键字导入包
有个这样的问题值的我们思考:如果某个类中需要用到了Math类,那么如何让编译器知道应该选择哪一个包中的Math类呢?是java.lang.Math类呢还是com.lzw.Math类? 这时候我们可以使用Java中的import关键字来指定.例如:如果在程序中使用import com.lzw表达式,那么我们在使用Math类时就会选择com.lzw.Math类来使用,当然也可以直接在程序中使用Math类时指定com.lzw.Math类. 示例如下:
import java.util.Date;
public class TestDemo {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.getTime());
}
}
如果需要使用java.util中的其他类,可以直接使用import java.util.*,但还是建议在以后的代码编写过程中显式的指定要导入的类名,避免冲突的发生.如下图的例子就出现了编译错误:
2.2 使用import导入静态成员
import除了可以导入包之外,还可以导入静态成员,使用这种方式可以更方便的写一些代码,如下所示:
import static java.lang.Math.*;
public class TestDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
double res = sqrt(pow(a,2) + pow(b,2));
System.out.println(res);
}
}
3 注意点
同一个包中的类相互访问时,可以不指定包名;创建包的时候,包名一定是小写的;创建包的时候,一定要在前面加上package包路径;import和C++中的#include差别很大,C++必须#include来引入其他文件内容,但是Java不需要;import只是为了写代码的时候更方便,更类似于C++的namespace和using;如果某个成员不包含public和private关键字,此时这个成员可以在包内部的其他类使用,但是不能在包外部的类使用.