提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录- 包(package)
- 1、导入包中的类
- 2、静态导入
- 3、将类放到包中
- 4、包的访问权限控制
- 5、常见的系统包
- 包 (package) 是组织类的一种方式,使用包的主要目的是保证类的唯一性。
- package 语句作为 Java 源文件的第一条语句,指明该文件中定义的类所在的包。 若缺省该语句,则指定为无名包 。它的格式为:package 顶层包名 子包名;
- 举例:
pack1 pack2 PackageTest.java
package pack1.pack2;
//指定类PackageTest属于包 pack1.pack2
public class PackageTest{
public void display(){
System.out.println("in method("in method display()");
}
}
- 包对应于文件系统的目录, package 语句中,用 来指明包 目录 的层次;
- 包通常用 小写 单词标识。通常使用所在公司域名的倒置: com.atguigu.xxx
- 包的作用:
- 包帮助管理大型软件 系统 将功能 相近的类划分到同一个包中 。 比如 MVC 的设计模式
- 包可以包含类和 子包 划分项目 层次 便于管理
- 解决类命名冲突的问题
- 控制访问权限
- 注意:
- 在 源文件中使用 import 显式的导入指定包下的类或接
- 声明 在包的声明和类的声明之间。
- 如果 需要导入多个类或接口,那么就并列显式多个 import 语句即可
- 举例 :可以使用 java.util.* 的方式,一次性导入 util 包下所有的类或接口。
- 如果 导入的类或接口是 java.lang 包下的,或者是当前包下的,则可以省略此 import 语句。
- 如果 在代码中使用不同包下的同名的类。那么就需要使用类的全类名的方式指明调用的
是哪个类。
7.如果 已经导入 java.a 包下的类。那么如果需要使用 a 包的子包下的类的话,仍然需要 导入。
8.import static 组合的使用:调用指定类或接口下的静态的属性或方法
- java中提供了很多现成的类,例如:
public class Test {
public static void main(String[] args) {
java.util.Date date = new java.util.Date();
// 得到一个毫秒级别的时间戳
System.out.println(date.getTime());
}
}
可以使用 java.util.Date 这种方式引入 java.util 这个包中的 Date 类.
- 也可以使用 import 语句导入包,import 语句告诉编译器到哪里去寻找类:
- 语法格式:import 包名 . 类名
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();
// 得到一个毫秒级别的时间戳
System.out.println(date.getTime());
}
}
- 如果需要使用 java.util 中的其他类, 可以使用 import java.util.*,例如:
import java.util.*;
public class Test {
public static void main(String[] args) {
Date date = new Date();
// 得到一个毫秒级别的时间戳
System.out.println(date.getTime());
}
}
- 但是更建议显式的指定要导入的类名. 否则还是容易出现冲突的情况。
import java.util.*;
import java.sql.*;
public class Test {
public static void main(String[] args) {
// util 和 sql 中都存在一个 Date 这样的类, 此时就会出现歧义, 编译出错
Date date = new Date();
System.out.println(date.getTime());
}
}
// 编译出错
Error:(5, 9) java: 对Date的引用不明确,java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配
在这种情况下需要使用完整的类名,例如:
import java.util.*;
import java.sql.*;
public class Test {
public static void main(String[] args) {
//使用完整的类名
java.util.Date date = new java.util.Date();
System.out.println(date.getTime());
}
}
-
注意事项:
-
import 和 C++ 的 #include 差别很大. C++ 必须 #include 来引入其他文件内容, 但是 Java 不需要.
-
import 只是为了写代码的时候更方便. import 更类似于 C++ 的 namespace 和 using
-
- 使用 import static 可以导入包中的静态的方法和字段:
import static java.lang.System.*;
public class Test {
public static void main(String[] args) {
out.println("hello");
}
}
- 使用这种方式可以更方便的写一些代码, 例如:
import static java.lang.Math.*;
public class Test {
public static void main(String[] args) {
double x = 30;
double y = 40;
// 静态导入的方式写起来更方便一些.
// double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
double result = sqrt(pow(x, 2) + pow(y, 2));
System.out.println(result);
}
}
3、将类放到包中
3.1、基本规则:
- 在文件的最上方加上一个 package 语句指定该代码在哪个包中
- 包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.baidu.www )
- 包名要和代码路径相匹配. 例如创建 com.baidu.www 的包, 那么会存在一个对应的路径 com.baidu.www 来存
储代码. - 如果一个类没有 package 语句, 则该类被放到一个默认包中
3.2、操作步骤
(1) 、在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包
(2)、 在弹出的对话框中输入包名, 例如 com.baidu.www ,然后点击Enter键,创建成功
(3) 、在包中创建类, 右键包名 -> 新建 -> 类, 然后输入类名
(4) 、此时可以看到我们的磁盘上的目录结构已经被 IDEA 自动创建出来了
(5)、 同时我们也看到了, 在新创建的 Test.java 文件的最上方, 就出现了一个 package 语句包
- Java权限修饰符 public 、 protected 、 缺省 、 private 置于 类的成员 定义前,用来限定对象对该类成员的访问权限。
- 对于class 的权限修饰只可以用 public 和 default( 缺省) 。
- public类可以在任意地方被访问
- default 类只可以被同一个包内部的类访问
- default(缺省)示例:
Demo1 和 Demo2 是同一个包中, Test 是其他包中.
- Demo1.java
package com.baidu.com;
public class Demo1 {
int value = 0;
}
- Demo2.java
package com.baidu.com;
public class Demo2 {
public static void Main(String[] args) {
Demo1 demo = new Demo1();
System.out.println(demo.value);
}
}
// 执行结果, 能够访问到 value 变量
10
- Test.java
package com.baidu.com.yimu;
public class Test {
public static void main(String[] args) {
Demo1 demo = new Demo1();
System.out.println(demo.value);
}
}
// 编译出错
Error:(6, 32) java: value在package com.baidu.com.yimu中不是公共的; 无法从外部程序包中对其进行访问
5、常见的系统包
- java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
- java.lang.reflect:java 反射编程包;
- java.net:进行网络编程开发包。
- java.sql:进行数据库开发的支持包。
- java.util:是java提供的工具程序包。(集合类等) 非常重要
- java.io:I/O编程开发包。
- java text 包含了一些 java 格式化相关的类
- java awt 包含了构成抽象窗口工具集 abstract window toolkits 的多 个类 这些类被用来构建和管理应用程序的图形用户界面 (GUI)。



