一、什么是包
包(package)就是java中打包好的一个文件夹,里面有很多可以使用的类。例如:ArrayList是放在java.util这个包中,顾名思义,java.util包中放了很多工具类。
使用java API的类是很简单的,把它当作是自己写的去用就行了。唯一的区别就是,需要在程序的某个地方指明函数库类的完整名称,即包的名称+类的名称。例如:java.util.ArrayList(这个才是ArrayList的完整名字)。
说白了,包就是文件夹,类就是文件夹里面的文件。
同一个包中的类可以互相访问,不用import。
二、包的三大作用
- 区分相同名字的类。同一个文件夹下不能出现同名的文件,因此把两个同名的类分别放在两个包中,就相当于是放在两个文件夹中。
- 当类很多时,可以方便的管理类。
- 控制访问范围。
三、使用包的方式
1、包的基本语法:
package是关键字,表示打包;后面的是包名。
package java.util
2、使用包中的类:
以ArrayList类为例,如果想要使用java.util中的ArrayList类,有两种方式:
- 使用import,即放一个import语句在文件的最前面:
import java.util.ArrayList //只引入java.util包中的ArrayList类;一般建议用这个,用哪个类就导入哪个
import java.util //引入java.util包中的所有类
- 直接在程序中打出ArrayList的全名,不管在哪里,只要使用了就打出全名。
//声明的时候
java.util.ArrayList<Dog> list = new java.util.ArrayList<Dog>();
//用在参数的时候
public void go(java.util.ArrayList<Dog> list){}
//用作返回类型的时候
public java.util.ArrayList<Dog> foo(){}
Tips:
除非是来自java.lang这个包。使用该包中的类不需要指定全名,其他的包全都需要。像经常使用的System(System.out.println)、String和Math(Math.Random())都是属于java.lang这个包。另外,object类也是属于java.lang包的。
为什么java.lang不需要指定全名呢?java能找到吗?
- 答案是可以的,因为java.lang是一个预先被引用的包。它是一个经常被用到的基础包,所以可以不用指定名称。并且java.lang包中的类,例如:java.lang.String和java.lang.System是独一无二的class,java知道要去哪里找。
四、包的命名规则和规范
命名规则:
只能包含数字、字母、下划线和“.”,但是不能用数字开头,不能是关键字。
demo.class.ex1 //错误的!因为class是关键字
demo.12a.ex1 //错误的!因为12a是数字开头
demo.a12.ex1 //正确的!
命名规范:
一般都是小写字母+“.”。普遍的命名方式都是:com.公司名.项目名.业务模块名
eg: com.sina.crm.user //用户模块
com.sina.crm.order //订单模块
com.sina.crm.utils //工具类
五、常见的包
- java.lang //lang包是基础包,默认引入,不需要再引入
- java.util //util包是系统提供的工具包,里面有很多工具类
- java.net //网络包,用于网络开发的
- java.awt //是做java的界面开发,GUI