4.5包
前面我们已经听过包(package)这个概念了,比如String类在java.lang包下,Arrays类在java.util包下。那么为什么要引入包的概念呢?我们思考一个问题:java类库提供了上千个类,我们很难完全记住他们,如果我们编写了一个类,类名和类库中的某个类名字重复了怎么办?
其实一个操作系统的文件系统也会遇到类似的问题,那么windows系统如何解决的?这个你肯定知道,就是采用目录层次结构。我们把硬盘分成很多分区,例如c盘、d盘等,这个叫做根目录。然后再一级一级的建立文件夹,看图:
我们在workspace和workspace2下分别创建同名文件:hello.java,那么这2个文件的完整路径为:
D:\Java大失叔\workspace\hello.java
D:\Java大失叔\workspace2\hello.java
因此不会有冲突。
4.5.1包的概念
在Java中,是用包来解决这个问题的。包就类似于文件目录层次结构,是采用圆点(.)来分割,例如java.util。包类似于命名空间,我们平时说的类名,其实是类名的简写,一个类真正的名字是包名.类名,我们称之为完整类名。例如String类的的完整类名是java.lang.String,Arrays类的完整类名是java.util.Arrays。有了包之后,我们只需把我们自己编写的类放到我们自己的包中,这样即使类名和类库中的名字重复,也不会有冲突了(当然我们不建议这么做),例如我们也编写一个String类,放在我们自己的包javadashishu下,则我们的String类的完整类名是javadashishu.String,和java.lang.String不一样,就不会有冲突。
为了保证包名不冲突,针对包名我们会有一套推荐的命名方法,Sun公司的建议是:
包名都采用小写英文字母或数字,不能以圆点(.)开头或结尾
用倒置的域名作为包名前缀,例如
org.apache
com.google
子包名使用项目或功能的名字,尽量使用有意义的单词
尽量避免和JDK中的类同名
例如,笔者可以把《Java从入门到失业》的例子都放到包:com.javadss.javase下。
4.5.2创建包
我们已经了解了包的概念,那么怎么把一个类放到一个包下呢?下面们用Eclipse来演示创建类和包的过程,首先我们先创建本书第四章的包:com.javadss.javase.ch04。右键点击工程src文件,如下图:
<