面向对象之package、import和import static详解
[toc]
# package
、import
和import static
Java引入了包(package)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。
Java允许将一组功能相关的类放在同一个package
下,从而组成逻辑上的类库单元。
如果希望把一个类放在指定的包结构下,应该在Java
源程序的第一个非注释行放置如下格式的代码:
package packageName;
1
一旦在Java
源文件中使用了这个package
语句,就意味着该源文件里定义的所有类
都属于这个包
。位于包中的每个类
的完整类名
都应该是包名和类名的组合
,如果其他人需要使用该包下的类
,也应该使用包名加类名的组合
。
# 构成Java包机制的两大要素
- 源文件里使用
package
语句指定包名。 class
文件必须放在对应的路径下。
# 包名命名规则
- Java语法只要求包名是
有效的标识符
即可,但从可读性规范角度来看,包名应该全部是小写字母,而且应该由一个或多个有意义的单词连缀而成。 Oracle
建议使用公司Internet域名
倒写来作为包名 ,例如公司的Internet域名是crazyit.org
,则该公司项目的所有类都建议放在org.crazyit
包及其子包下。package
语句必须作为源文件的第一条非注释性语句,一个源文件只能指定一个包,即只能包含一条package
语句,该源文件中可以定义多个类,则这些类将全部位于该包下。
# import
关键字
import
语句可以简化编程,可以导入指定包下某个类或全部类。
- 同一个包下的类可以自由访问。无需使用
import
关键字导入该类(包名+类名组合) - 不同包下的类互相调用时需要使用
import
关键字import
可以向某个Java
文件中导入指定包层次下某个类或全部类。import
语句应该在package
语句(如果有的话)之后,类定义之前。- 一个Java源文件只能包含一个
package
语句,但可以包含多个import
语句。多个import
语句用于导入多个包层次下的类。
import
语句导入语法- 导入单个类(一般类名与源文件名(也就是xxx.java)都是一致的)
import com.abc.part_three.Loop99MultiplicationTable;
1 import
导入指定包下的全部类//*只代表part_three包下的所有类,不代表包(比如part_three包下的子包) import com.abc.part_three.*;
1
2
- 导入单个类(一般类名与源文件名(也就是xxx.java)都是一致的)
- 一旦在
Java
源文件中使用import
语句来导入指定类,在该源文件中使用这些类时就可以省略包前缀,不再需要使用类全名。 - 极少数极端情况下不能使用
import
语句,只能在源代码中使用类全名。
Java
默认为所有源文件导入java.lang
包下的所有类,因此前面在Java
中使用String
,System
类时都无须使用import
语句来导入这些类。但对于前面介绍数组
时提到的Arrays
类位于java.util
包下,则必须使用import
语句来导入该类。
# import static
静态导入
JDK1.5后增加了一种静态导入(使用import static
语句)的语法,它用于导入指定类的某个静态成员变量、方法或全部的静态成员变量、方法。
*
- 导入指定类的
单个静态成员变量/方法
语法//PI是java.lang.Math类的静态成员变量(类变量使用static修饰),表示π常量。 import static java.lang.Math.PI;
1
2 - 导入指定类的
全部静态成员变量/方法
语法//导入java.lang.System类的全部静态成员变量和方法 import java.lang.System.*;
1
2
代码示例
package com.abc.part_four;
//PI是java.lang.Math类的静态成员变量(类变量使用static修饰),表示π常量。
import static java.lang.Math.PI;
import static java.lang.Math.sqrt;
import static java.lang.System.*;
/**
* @author mi
*/
public class Person2Test {
public static void main(String[] args) {
/**
* out是java.lang.System类的静态成员变量,代表标准输出。
* PI是java.lang.Math类的静态成员变量,代表π常量
*/
//输出:3.141592653589793
out.println(PI);
//直接调用Math类的sqrt静态方法
//输出:16.0
out.println(sqrt(256));
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 一句话总结import
和import static
的作用
- Java源文件中使用
import
可以在写代码时省略写包名;使用import static
可以在写代码时省略写类名。 import
语句和import static
语句都是用于减少程序中代码编写量的。
# Java中常用的包
Java的核心类都放在Java
包以及其子包下,Java
扩展的许多类都放在Javax
包以及其子包下。
java.lang
: 这个包下包含了Java
语言的核心类,如String
、Math
、System
和Thread
类等,使用这个包下的类无须使用import
语句导入,系统会自动导入这个包下的所有类。java.util
: 这个包下包含了Java
的大量工具类/接口
和集合框架类/接口
,例如Arrays
和List
、Set
等。java.net
: 这个包下包含了一些Java网络编程
相关的类/接口。java.io
: 这个包下包含了一些Java输入/输出编程
相关的类/接口。java.text
: 这个包下包含了一些Java格式化
相关的类。java.sql
: 这个包下包含了Java进行JDBC数据库编程
的相关类/接口。java.awt
: 这个包下包含了抽象窗口工具集(Abstract Window Toolkits)
的相关类/接口,这些类主要用于构建图形用户界面(GUI)程序
。java.swing
: 这个包下包含了Swing图形用户界面编程
的相关类/接口,这些类可用于构建平台无关的GUI程序。
编辑 (opens new window)
上次更新: 2021/08/15, 14:23:41
- 01
- Python实现对字符串的加解密02-25
- 02
- Python3对大文件中指定字符进行排序再写入到新的文件10-24
- 03
- Ubuntu下配置adb环境连接Android设备进行调试08-17