【Java基础笔记】1-6 包机制
§1-6 包机制
为更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
包语句的语法格式为:package pkg1[.pkg2.[pkg3...]]
1-6.1 包的作用和命名
包的命名:
-
只能包含数字、字母、下划线、小圆点,但不能用数字开头;
-
不能为关键字或保留字;
-
以下是错误包名:
demo.class.exec1
,demo.12a
。
命名规范:一般为 com.公司名.业务模块名
,即倒置域名。
包的作用:
- 区分相同名字的类;
- 当类很多时,可以很好地管理类(见 Java API 文档);
- 控制访问范围。
1-6.2 包的基本语法和原理
打包语法:使用 package
关键字打包,必须位于文件的首行,且一个类中有且只有一句 package
语句。
package package1[.package2...];
导入包语法:位于 package
语句下,类定义前,可以有多句,无顺序要求。
import package1[.package2...].(classname|*);
注意:导入包时
-
若导入的包内成员与当前类重名,将会报错;
-
import
语句必须在packge
语句下; -
可以使用通配符
*
导入包下所有成员; -
建议需要什么就导入什么,尽量避免全部导入;
-
所导入包中含有重名类,创建对象时可以通过添加包名加以区分;
例:有以下两个包
//com.zebt.packages.zhangsan.Student.java package com.zebt.packages.zhangsan; public class Student { } //com.zebt.packages.lisi.Student.java package com.zebt.packages.lisi; public class Student {}
在测试类中,有
package com.zebt.packages; import com.zebt.packages.zhangsan.Student; //只能导入其一 public class Test { public static void main(String[] args) { Student s1 = new Student(); //由于有import语句,包名可省略 com.zebt.packages.lisi.Student s2 = new com.zebt.packages.lisi.Student(); //lisi System.out.println(s1); System.out.println(s2); } }
运行,得到
com.zebt.packages.zhangsan.Student@58372a00 com.zebt.packages.lisi.Student@4dd8dc3
移动包:IDEA 会默认压缩包,为创建多级包,应在工程栏的设置中取消勾选Compact Middle Packages
。
同时,若发现无法移动类或包,请在目标位置新建包后再移动。
包的原理:包的本质实际上就是通过创建不同的文件夹 / 目录来保存类文件。
这一点在 IDEA 左侧的文件资源管理器中可清晰看出。
1-6.3 常用的包
java.lang.*
:lang
包是基本包,默认导入,不需要再导入。例如 String
, Math
等;
java.util.*
:util
包,系统提供的工具包、工具类,例如 Scanner
;
java.net.*
:网络包,用于网络开发;
java.awt.*
:Java 界面开发,GUI 编程。