• 🤔学包前的思考
  • 简单介绍包的概念
  • 包的作用
  • 包的创建🤖
  • 包的引入
  • 简单介绍Javase API的主要包


🤔学包前的思考

想想在大型的项目中,肯定不是几个类就可以完成的,几千个类甚至上万个类都是有可能的,而且各个类名还不能相同,那混在一起会不会太复杂了点?
Java里面提供了一个可以有效组织类的结构-----包。
标准的Java类库就是由包进行组织在一起的。比如我们常用的java.util包就是其中的一个,里面有很多我们常用的类:Scanner,Date,Arrays…等等。

简单介绍包的概念

包是一组相关的类和接口以及子包的集合。(子包就是包里面还有包,包里面装着子包和类,然后子包里面还可以有子包和类。。。)和文件系统很相似,包将Java语言的类和接口有机地组织成层次结构,使得Java程序的功能清楚,结构分明。

JAVA包结构层次 java 包结构_JAVA包结构层次


(一个包可以有若干个子包,上图为了简单一点只画了一个,可以更多也可以没有)

包的作用

  1. 区分相同名字的类。不同包里可以有相同名字的类,但同一个包里不行。
  2. 当类很多时,可以更好的管理类。
  3. 控制访问范围。如下图:

包的创建🤖

包是由包语句package创建,其语法格式如下:

package 包名;

功能:把源文件中定义的类、接口放到指定的包中,即指明源文件中定义的类和接口属于哪个包。

(我们在eclipse创建一个包时,会让我们输入包名,然后再在包里创建类,然后它会自动把package 包名放在第一行)

注:在一个源文件中只能存在一个包,且package语句必须第一行。(除了注释外)所以源文件中有多个类和接口的话也都是在一个包中。

JAVA包结构层次 java 包结构_类名_02

如果一个Java源文件不包含package语句,那么源文件中的类和接口就属于一个无名的默认包。无名默认包的类不能被其他包中的类引用。

包的引入

如何让一个类访问另一个包的类呢?(java.lang包中的类除外,因为编译系统在编译每个Java源文件时都会自动导入这个包,即相当于在package语句(若有)的后面添加了如下一行:
import java.lang. *;)

访问方式1. 直接指定,引用这个类的完整类名(前面要加包名前缀,相对比较麻烦)

JAVA包结构层次 java 包结构_java_03


访问方式 2. 用import语句。import语句有两种格式。

格式1:import 包名.类名;

功能:引入指定包中需要使用的一个类和接口,然后进行操作只要用其类名就好了(就是不用加那个包的前缀了)。

例如:将import xiyou.zxl.javabook.chapter04.Circle;放在Ex4_4类的前面。这样,在类体中就可以引用其简单类名Circle,而不用其完整的类名。

格式2:import 包名. *;
功能:引入整个包,使得包中所有类和接口都可以使用,进行操作只需要使用包里的简单类名即可(就是不用加包的前缀)。
注意上面提到的访问权限就可以了

需要注意的问题:

  1. 引入包的子包里面的类访问不了,因为每个包都是独立的,顶层包就引入它包里面的类,但它的子包中的类不会被引入。
  2. 当引入多个包碰到相同类名时,可以选择性选择访问方式1的形式(直接指定)访问,防止编译错误。
简单介绍Javase API的主要包

1)java.lang,是Java语言的核心包,是编写Java程序所需要的基本类和接口,包括Object类、System类、Class类、异常处理类、线程类等。这个包由编译器自动引入。
2)java.applet,提供Applet执行时需要的类。3)java.awt,提供操作图形用户界面的基本功能。
4)java.io,提供Java程序进行输入输出的类,以及目录和文件管理类。
5)java.net,提供实现网络功能。
6)java.util,提供实用程序类及集合类等常用的工具类。
7)java.sql,提供使Java程序具有访问不同数据库的能力。
8)java.rmi,提供远程连接与载入,实现了远程方法调用的功能。

🥰🥰🥰新手上路,点个赞鼓励一下子啦!🥰🥰🥰