java培训
搜索分类

Java的package一定要写吗?Java的package有什么用?

赋能网 2023-05-09 58

编写java的时候,我们需要遵守java编程代码规范,不然就会出现java运行错误的情况,导致java无法正常运行,那Java的package一定要写吗?接下来我们就来给大家讲解一下这方面的内容。

Java的package一定要写,尽管放到正确的包路径中,没有pakage声明的文件中的类在编译过程中会被放到默认包(未命名)中,无法被引用。

Java的package有什么用?

包的 3 个作用如下:

1. 区分相同名称的类。

2. 能够较好地管理大量的类。

3. 控制访问范围。

包定义

Java 中使用 package 语句定义包,package 语句应该放在源文件的第一行,在每个源文件中只能有一个包定义语句,并且 package 语句适用于所有类型(类、接口、枚举和注释)的文件。定义包语法格式如下:

package 包名;

Java 包的命名规则如下:

包名全部由小写字母(多个单词也全部小写)。

如果包名包含多个层次,每个层次用“.”分割。

包名一般由倒置的域名开头,比如 com.baidu,不要有 www。

自定义包不能 java 开头。

注意:如果在源文件中没有定义包,那么类、接口、枚举和注释类型文件将会被放进一个无名的包中,也称为默认包。在实际企业开发中,通常不会把类定义在默认包下。

包导入

如果使用不同包中的其它类,需要使用该类的全名(包名+类名)。代码如下:

example.Test test = new example.Test();

其中,example 是包名,Test 是包中的类名,test 是类的对象。

为了简化编程,Java 引入了 import 关键字,import 可以向某个 Java 文件中导入指定包层次下的某个类或全部类。import 语句位于 package 语句之后,类定义之前。一个 Java 源文件只能包含一个 package 语句,但可以包含多个 import 语句。

使用 import 导入单个类的语法格式如下:

import 包名+类名;

上面语句用于直接导入指定类,例如导入前面的 example.Test 类,代码如下:

import example.Test;

使用 import 语句导入指定包下全部类的用法按如下:

import example.*;

上面 import 语句中的星号(*)只能代表类,不能代表包,表明导入 example 包下的所有类。

提示:使用星号(*)可能会增加编译时间,特别是引入多个大包时,所以明确的导入你想要用到的类是一个好方法,需要注意的是使用星号对运行时间和类的大小没有影响。

通过使用 import 语句可以简化编程,但 import 语句并不是必需的,如果在类里使用其它类的全名,可以不使用 import 语句。

Java 默认为所有源文件导入 java.lang 包下的所有类,因此前面在 Java 程序中使用 String、System 类时都无须使用 import 语句来导入这些类。但对于前面介绍数组时提到的 Arrays 类,其位于 java.util 包下,则必须使用 import 语句来导入该类。

在一些极端的情况下,import 语句也帮不了我们,此时只能在源文件中使用类全名。例如,需要在程序中使用 java.sql 包下的类,也需要使用 java.util 包下的类,则可以使用如下两行 import 语句:

import java.util.*;
import java.sql.*;

如果接下来在程序中需要使用 Date 类,则会引起如下编译错误:

Test.java:25:对Date的引用不明确,
java.sql中的类java.sql.Date和java.util中的类java.util.Date都匹配

上面错误提示:在 Test.java 文件的第 25 行使用了 Date 类,而 import 语句导入的 java.sql 和 java.util 包下都包含了 Date 类,系统不知道使用哪个包下的 Date 类。在这种情况下,如果需要指定包下的 Date 类,则只能使用该类的全名,代码如下:

// 为了让引用更加明确,即使使用了 import 语句,也还是需要使用类的全名

java.sql.Date d = new java.sql.Date();

系统包

Java SE 提供了一些系统包,其中包含了 Java 开发中常用的基础类。在 Java 语言中,开发人员可以自定义包,也可以使用系统包,常用的系统包如表所示。

Java的package还是很重要的,有了它能够解决类的命名冲突、类文件管理等问题。并且还可以在包内定义类,而在包外的代码不能访问该类。最后大家如果想要了解更多初识java知识,敬请关注赋能网。


发表评论
0评