package

  • 包的 3 个作用如下:
    1.区分相同名称的类。
    2.能够较好地管理大量的类。
    3.控制访问范围。

  • Java 包的命名规则如下:
    1.包名全部由小写字母(多个单词也全部小写)。
    2.如果包名包含多个层次,每个层次用“.”分割。
    3.包名一般由倒置的域名开头,比如 com.baidu,不要有 www。
    4.自定义包不能 java 开头。
    注意:如果在源文件中没有定义包,那么类、接口、枚举和注释类型文件将会被放进一个无名的包中,也称为默认包。在实际企业开发中,通常不会把类定义在默认包下。

  • 所有的Java类都是放在同一个目录下面的,因此类之间的相互调用无需显式声明调用。
    -同一个目录下,两个类的名字不能相同。
    -文件过多,查找和修改都不易,且容易出错。

  • Java支持多个目录放置Java,并且通过package/import/classpath/jar等机制配合使用,可以支持跨目录放置和调用Java类。

-package包和C++中的namespace类似。
-在Java类文件的第一句话给出包的名称。

//cn/edu/ecnu/PackageExample.java
package cn.edu.encu;
public class PackageExample {

	
}

类全称cn.edu.encu.PackageExample,短名称 PackageExample 。

  • 引用类的时候,必须采用全称引用;程序正文可以用短名称。
  • PackageExample.java必须严格放置在cn/edu/ecnu目录下。

-包名 package name尽量唯一。
-域名是唯一的,因此常用域名做包名。
-域名逆序 cn.edu.encu 范围通常从大到小。
-类的完整名字:包名+类名。


import

如果使用不同包中的其它类,需要使用该类的全名(包名+类名)。代码如下:

example.Test test = new example.Test();

其中,example 是包名,Test 是包中的类名,test 是类的对象。

为了简化编程,Java 引入了 import 关键字,import 可以向某个 Java 文件中导入指定包层次下的某个类或全部类。import 语句位于 package 语句之后,类定义之前。一个 Java 源文件只能包含一个 package 语句,但可以包含多个 import 语句。多个import的顺序无关。

使用 import 导入单个类的语法格式如下:

import 包名+类名;

上面语句用于直接导入指定类,例如导入前面的 example.Test 类,代码如下:

import example.Test;

使用 import 语句导入指定包下全部类的用法按如下:

import example.*;

上面 import 语句中的星号(*)只能代表类,不能代表包,表明导入 example 包下的所有类。
提示:使用星号( * )可能会增加编译时间,特别是引入多个大包时,所以明确的导入你想要用到的类是一个好方法,需要注意的是使用星号对运行时间和类的大小没有影响。

通过使用 import 语句可以简化编程,但 import 语句并不是必需的,如果在类里使用其它类的全名,可以不使用 import 语句。
Java 默认为所有源文件导入 java.lang 包下的所有类,因此前面在 Java 程序中使用 String、System 类时都无须使用 import 语句来导入这些类。但对于前面介绍数组时提到的 Arrays 类,其位于 java.util 包下,则必须使用 import 语句来导入该类。


总结:

  • Java通过包(package)来分开类
    -package必须和目录层次一样。

  • Java通过引用(import)来导入类
    -import类尽量准确
    参考资料:
    http://c.biancheng.net/view/6084.html