Java 包的使用详解

导读:本篇文章讲解 Java 包的使用详解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

在这里插入图片描述

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 包中的类时,不需要手动导包,系统会默认导入。


Java编程基础教程系列

【Java编程进阶】封装继承多态详解

【Java编程进阶】Java抽象类与接口详解

【Java编程进阶】Object类及常用方法详解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82707.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!