Java 包的使用详解
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
1. 概念
在开发过程中会定义很多的类随着类的定义越来越多难免会出现类名重复的情况对类的管理变的很困难为了方便对类进行管理我们可以把相关联的类放在同一个目录下该目录就是一个包包的实质就是文件夹。
包是对类和接口的封装给类提供了多层命名空间。这样管理不同的类就可以允许在同一个项目中存在相同名称的类只需要把相同名称的类放在不同的包里面。
2. 导入包中的类
我们把相关联的类放在同一个包中使用时只需导入包中的类Java中有三种方法导入包中的类。
2.1 使用类的全路径
示例
public class Test {
public static void main(String[] args) {
//getTime()方法 从 1970 年 1 月 1 日开始计算到 Date 对象中的时间之间的毫秒数。
java.util.Date time = new java.util.Date();
System.out.println(time.getTime());
}
}
使用此方法每次创建一个对象都需要导入类比较麻烦。但是优点是不会出现冲突像在程序开头使用导包的方式就会出现冲突的情况但是依然建议使用导包的形式导入包中的类在容易出现冲突的情况下特殊处理。
2.2 导入包
示例
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date time=new Date();
System.out.println(time.getTime());
}
}
使用此方法更加的方便但是会出现冲突。例如如果不知道 Date 类是哪一个包中的类可以直接导入 java.util.* 表示导入 java.util 包中的所有类。示例
import java.util.*;
import java.sql.*;
public class Test {
public static void main(String[] args) {
Date time=new Date();
System.out.println(time.getTime());
}
}
示例中的代码出现了错误原因是同时导入的两个包中都存在 Date 类 java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配出现了歧义不知道调用的是哪一个类。
2.3 静态导入包
示例
//静态导入
import static java.lang.Math.PI;
import static java.lang.Math.random;
import static java.lang.Math.round;
//或者import static java.lang.Math.*;
public class Test {
public static void main(String[] args) {
//静态导入省略"Math."
//不使用静态导入:System.out.println(Math.random());
System.out.println(random());
System.out.println(PI);
System.out.println(round(5.6));
}
}
使用静态导入类时只需要在 import 关键字后面加上 static 关键字。此方法是在 JDK 5 后面添加其目的是减少字符输入量提高代码可读性。但是如果同时导入的两个类中有重命名的静态成员会出现报错。
3. 自定义包
在代码的最上方加上一个 package 语句指定该代码位于哪个包中这样的方式叫做自定义包。如果没有使用 package 语句代码放在默认包中包名的定义需要唯一且一般使用域名的颠倒形式其和代码的路径相同例如
package com.baidu.www
接下来我们在 IDEA 中创建一个包右键 src / 新建 / 包 这样我们就创建好了一个包。
在新建的包中添加类右键新创建的包 / 新建 / 类。
打开相应的文件目录查看是否创建成功。
同样的此时文件的最上面已经生成了 package 语句。
4. 包的访问权限控制
前面我们使用访问权限修饰符 private 来修饰类的成员属性使我们无法在类外访问。同样访问权限修饰符也控制了不同的包之间的访问规则。例如使用 default 访问权限时在同一个包中可以互相使用在不同的包中就无法调用。示例
此时的错误原因是TestPackage2.A 在 TestPackage2 中不是公共的; 无法从外部程序包中对其进行访问。
5. 常用的包
- java.lang 系统常用基础类(String、Object)
- java.net 进行网络编程开发包。
- java.sql 进行数据库开发的支持包。
- java.util 是java提供的工具程序包。(集合类等) 非常重要
- java.io I/O编程开发包
其中使用 java.lang 包中的类时不需要手动导包系统会默认导入。