Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
80 lines (49 loc) · 3.23 KB

File metadata and controls

80 lines (49 loc) · 3.23 KB
Copy raw file
Download raw file
Outline
Edit and raw actions

为了更好的区分管理类,Java 引入了包(package))的概念。Java 采用类似于文件夹的形式引入包的概念存储类,并且可以借助包名对类进行区分, 即使类名相同,但是包名不同,Java 也可以区分到底到底引用的是哪个类。

使用

Java 使用package关键字来命定定义包,通常使用小写的字母来命名避免与类、接口名字的冲突:

package pkg1[.pkg2[.pkg3…]];

通常我们使用公司、企业或者组织的域名地址加上项目名称,再加上对应的功能名称来命名包。例如Java 中常用的util包就是这样命名的。

/**
* java 是Sun公司推出的编程语言 这里并没有使用域名地址
* 只使用了项目名称和对应的功能名称
*/
package java.util;

作用

  • 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

  • 通过包名给类添加了唯一标识,避免了类名相同到时使用冲突。

  • 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

注意项

  • 包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。

  • 如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包(unnamed package)中。

import 关键字

为了使用包内的类、接口、枚举、注释,可以通过import关键字进行相应的导入。 在Java 源文件中import语句应位于package语句之后,所有类的定义之前,可以没有,也可以有多条,其语法格式为:

package pkg1[.pkg2[.pkg3…]];

import package1[.package2…].(classname|*);

public class Demo {

}

!>注意: 如果在一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略。

当使用不在同一个包之中的类的时候,必须使用import语句,使用方法有以下两种:

  • 直接引用相应的使用类, 如:
import java.util.Date;
  • 可以使用统配符*来引入整个包,这样也可以使用包中的类,如:
import java.util.*;

类的编译执行

类目录的绝对路径叫做class path。设置在系统变量 CLASSPATH 中。编译器和Java 虚拟机通过将package名字加到class path后来构造.class文件的路径。

类中有包声名时的编译执行过程:

  • 编译如果Java 文件中没有包声名则Java 虚拟机会在Java 文件所在目录下生成.class字节码文件;如果有包声名,则在对应的包路径下生成.class字节码文件。

  • 打包编译时,会自动创建包目录,不需要自己新建包名文件夹。

  • 当当前目录有多个Java 文件需要编译或打包编译时,javac -d . *.java 指令可以给当前目录下的所有Java 文件根据程序中是否有包声明进行编译或打包编译。

  • 当执行时如果没有包声名,Java 虚拟机会直接在当前目录下寻找编译后的.class字节码文件,找到直接执行;如果有包声名,会现在当前目录下寻找,紧接着去包目录下寻找有没有.class字节码文件,有才会执行。

Morty Proxy This is a proxified and sanitized view of the page, visit original site.