前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java package 包构建原理及包的使用方式

java package 包构建原理及包的使用方式

作者头像
Freedom123
发布2024-03-29 08:26:18
700
发布2024-03-29 08:26:18
举报
文章被收录于专栏:DevOpsDevOps

Java 允许使用包( package > 将类组织起来。借助于包可以方便地组织自己的代码,并将 自己的代码与别人提供的代码库分开管理。

使用包的主要原因是确保类名的唯一性。 假如两个程序员不约而同地建立了 Employee 类。 只要将这些类放置在不同的包中, 就不会产生冲突。事实上,为了保证包名的绝对 唯一性, Sun 公司建议将公司的因特网域名(这显然是独一无二的)以逆序的形式作为包 名,并且对于不同的项目使用不同的子包。 例如, horstmann.com 是本书作者之一注册的域 名。逆序形式为 com.horstmann。 这个包还可以被进一步地划分成子包, 如 com.horstmann. corejava。

从编译器的角度来看, 嵌套的包之间没有任何关系。 例如,java.utU 包与 java.util.jar 包 毫无关系。每一个都拥有独立的类集合。

1. 类的导入 从编译器的角度来看, 嵌套的包之间没有任何关系。 例如,java.utU 包与 java.util.jar 包 毫无关系。每一个都拥有独立的类集合。 但是, 需要注意的是, 只能使用星号(*) 导入一个包, 而不能使用 import java.* 或 import java.*.* 导入以 java 为前缀的所有包。 注意:C++ 程序员经常将 import 与 #include 弄混。 实际上, 这两者之间并没有共同 之处 。在 C++ 中, 必须使用 include 将外部特性的声明加栽进来, 这是因为 C++ 编译器 无法查看任何文件的内部, 除了正在编译的文件以及在头文件中明确包含的文件。Java 编译器可以查看其他文件的内部, 只要告诉它到哪里去查看就可以了  在 C-H■ 中, 与 包 机 制 类 似 的 是 命 名 空 间(namespace)。 在 Java 中, package 与 import 语句类似于 C+H■ 中的 namespace 和 using 指令。

2. 静态导入: import 语句不仅可以导人类,还增加了导人静态方法和静态域的功能。 例如,如果在源文件的顶部, 添加一条指令: import static java.lang.System.*; 就可以使用 System 类的静态方法和静态域,而不必加类名前缀: out.println("Goodbye, World!"); //i.e., System.out exit⑼; //i.e., System.exit 另外,还可以导入特定的方法或域: import static java.lang.System.out; 实际上,是否有更多的程序员采用 System.out 或 System.exit 的简写形式,似乎是一件值 得怀疑的事情。这种编写形式不利于代码的清晰度。不过, sqrt(pow(x, 2) + pow(y, 2)) 看起来比 Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) 清晰得多。

3. 将类放入包中 要想将一个类放人包中, 就必须将包的名字放在源文件的开头, 包中定义类的代码之 前。例如,程序清单 4-7 中的文件 Employee.java 开头是这样的: package co«.horstiann.corejava; public class Employee { } 如果没有在源文件中放置 package 语句, 这个源文件中的类就被放置在一个默认包 ( defaulf package ) 中。默认包是一个没有名字的包。在此之前,我们定义的所有类都在默认 包中。 将包中的文件放到与完整的包名匹配的子目录中。 例如, com.horstmann.corejava 包 中的所有源文件应该被放置在子目录 com/horstmann/corejava ( Windows 中 com\horstmann\ corejava) 中。编译器将类文件也放在相同的目录结构中。

4. Jar包 类文件也可以存储在 JAR(Java归档 )文件中。在一个 JAR 文件中, 可以包含 多个压缩形式的类文件和子目录, 这样既可以节省又可以改善性能。在程序中用到第三方 ( third-party ) 的库文件时,通常会给出一个或多个需要包含的 JAR 文件。JDK 也提供了许多 的 JAR 文件, 例如,在 jre/lib/rt.jar 中包含数千个类库文件。

为了使类能够被多个程序共享,需要做到下面几点: 1 ) 把类放到一个目录中, 例如 /home/user/classdir。需要注意, 这个目录是包树状结构 的基目录。 如果希望将 com.horstmann.corejava.Employee 类添加到其中,这个 Employee.class 类文件就必须位于子目录 /home/user/classdir/com/horstmann/corejava 中。 2 ) 将 JAR 文件放在一个目录中,例如:/home/user/archives。 3 ) 设置类路径(classpath)。类路径是所有包含类文件的路径的集合。

警告: javac 编译器总是在当前的目录中查找文件, 但 Java 虚拟机仅在类路径中有 目录的时候才查看当前目录如果没有设置类路径, 那也并不会产生什么问题, 默认的 类 路 径 包 含 目 录 . 然 而 如 果 设 置 了 类 路 径 却 忘 记 了 包 含 目 录, 则 程 序 仍 然 可 以通过编译, 但不能运行。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档