目录
包是 Java 编程语言的一个特性,它能更好的组织和管理类之间的关系。
包是提供访问保护和名称空间管理的相关类型(类、接口、枚举和注释类型)的分组。
一、包命名规则
1.1、包名全部由小写字母(多个单词也全部小写)。
1.2、如果包名包含多个层次,每个层次用“.”分割。
1.3、包名一般由倒置的域名开头。
例如
域名 | 包命名 |
---|---|
hyphenated-name.example.org | org.example.hyphenated_name |
example.int | int_.example |
123name.example.com | com.example._123name |
1.4、包名不能包含 Java 关键字。
二、创建包
创建一个 com.service 包
package com.service;
public interface Draggable {
}
创建一个com.impl包
package com.impl;
import com.service.Draggable;
public class Circle
implements Draggable {
}
三、导入包
导入包需要用到 import 关键字。格式:import 包名 类名。
3.1、完全限定名导入
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<Object,Object> paramMap = new HashMap<Object,Object>();
}
}
java.util.HashMap 就是完全限定名引用。如果还需要用到包java.util中的其他类,还需要额外导入,有时候代码看起来比较臃肿。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<Object,Object> paramMap = new HashMap<Object,Object>();
List<String> list= new ArrayList<>();
}
}
3.2、导入整个包
import java.util.*;
面 import 语句中的星号(*)只能代表类,不能代表包,表明导入 java.util 包下的所有类。
等价于
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
3.3、导入静态方法
在com.demo包新建StringUitl 工具类。
package com.demo;
public class StringUitl {
public static boolean isEmpty(String name) {
if(null == name || name.length() < 1){
return false;
}
return true;
}
}
静态方法导入方式一
package com.day04;
import static com.demo.StringUitl.*;
public class Main {
public static void main(String[] args) {
boolean check = isEmpty("");
}
}
静态方法导入方式二
package com.day04;
import com.demo.StringUitl;
public class Main {
public static void main(String[] args) {
boolean check = StringUitl.isEmpty("");
}
}
四、JDK 中常见的包
SUN 公司在 JDK 中为程序开发者提供了各种使用工具类,这些类按功能不同分别被放入了不同的包中,供开发者使用。
java.lang 包含一些 Java 语言核心类,如String、Math、Integer、System和Thread等提供常用功能。在 java.lang 中还有一个子包:java.lang.reflect 用于实现 java 类的反射机制。
java.awt 包含构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用于构建和管理应用程序的图形用户界面(GUI)。
java.applet 包含applet运行所需的一些类。
java.net 包含执行与网络相关的操作的类。
java.io 包含提供多种输入/输出操作流的类。
java.util 包含一些实用工具类,如定义系统属性、日期日历相关的方法。
五、小结
5.1、管理与组织的作用,可以把相同功能放同一个包。
5.2、避免相同名称类起冲突,因为包创建了一个新的名称空间。
5.3、访问控制,对包内互相可以访问,对包外限制访问。