Java之包

我们在最开始写一个Java的时候,会发现我们的那个项目,帮助我们自动生成了一些东西,就比如那个第一行,就有package 项目名,那我们当时看到就很不理解,但还是硬着头皮往下写了,我们这篇就来好好了解一下包吧


我们都知道面向对象要来实际开发的话,需要设计很多的类,虽然Java为每一个类都生成了一个字节码文件,但是当声明的类很多的时候,发生冲突的可能也很大,那我们就需要一些东西来帮助我们管理这些类—即包(package)

Java语言提供的一种区别类名空间的机制

  • 每个包对应一个文件夹,
  • 我们在源程序中可以声明类所在的包,
  • 同一个包中的类名不能重复,不同包中的类可以相同
  • 默认情况下,同一包中的类可以相互访问
  • 若没有声明类所在的包,则会放在默认包中
使用package来创建包

若要创建自己的包,则必须以package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包
格式如下

package 包名1[ .包名2 [.包名3]...];

经过package之后,同一文件内的所有类或接口都被纳入相同的包中,而Java编译器会将包视同为文件系统的文件夹来管理,同时.用来指明文件夹的层次
e.g.

package cgj.ly.mapackage;

指定了这个包中的文件存储在文件cgj\ly\mypackage中

注意:包名要与对应的文件夹的字母大小一致
改变包名时要同时改变其对应的文件夹名

如果没有使用package语句声明类所在的包,则Java默认包的路径是当前文件夹,并且没有包名,即为无名包,无名包中不能有子包

Java语言中的常用包

Java中的package是用来存放类与接口的地方,所以也把package译为类库,即Java的类库时以包的形式实现的,Java已经把功能相近的类分门别类存放在不同库中,
其常用包有

  • java.lang 语言包
  • java.io 输入输出流的文件包
  • java.awt 抽象窗口的工具包
  • java.swing 轻型组件工具包
  • java.util 实用包
  • javax.swing.JApplet 小程序包
  • java.net 网络功能包
  • java.sql 数据库连接包
  • java.text 文本包
语言包

提供了Java语言最基础的类
包含如下的类

  • Object类
  • 数据类型包装类
  • 字符串类
  • 数学类
  • 系统和运行时类
  • 类操作类
  • 错误和异常处理类
  • 线程类
  • 过程类

输入输出流的文件包
包含实现Java程序与操作系统,用户界面以及其他Java程序之间的数据交换所使用的类
包含如下

  • 基本输入输出流类
  • 文件输入输出流类
  • 过滤输入输出流类
  • 管道输入输出流类
  • 随机输入输出流类

抽象窗口工具包
用来构建图形用户界面(GUI)的类库,包含许多界面元素和资源
可很方便的 编写美观,实用,标准化的应用程序界面
提供三个方面的设计支持
低级绘图操作,图形界面组件和布局管理,界面用户交互控制和事件响应
包含类如下

  • 绘图类
  • 各种控件类
  • 布局管理类
  • 事件类

轻型组件工具包
是AWT工具包的扩展,Swing组件是纯Java编写的,不直接使用本地组件
包含类如下

  • 组件类
  • 布局管理类

实用包
实现不同实用功能的类,包括日期类,集合类等

  • 数据输入类
  • 日期类
  • 链表类
  • 向量类
  • 哈希表类
  • 栈类
  • 树类

小程序包
实现运行在Internet浏览器中的JavaApplet的工具类库

网络功能包
实现的主要功能为底层的网络通信,访问Internet资源
包含类如下

  • 访问网络资源类
  • 套接字类
  • 服务器端套接字类
  • 数据报打包类
  • 数据报通信类

数据库连接包
实现JDBC(Java数据库连接)的类库,只要安装合适的驱动程序,同一个Java程序不需修改就可以访问这些不同数据库中的数据

Java语言中的几个常用类
  1. Date类
    描述日期时间的类
  2. Calendar类
    描述日期时间的抽象类
  3. Random类
    模拟一个伪随机数发生器
  4. Math类
    提供了两个常量pi和e的取值以及大量用于计算的基本数学函数
import语句引入
  1. 导入包
    如果要使用Java包中的类,必须在源程序中庸import语句导入所需要的类
    格式如下
import 包名1[. 包名2[.包名3]].类名 | *

import 为关键字,后面的均为包的层次,对应于文件夹,类名则指明要导入的类,如果要从一个类库中导入多个类,则可以使用*来表示包中所有的类,多个包名及类名之间用.分隔
e.g.

import java.awt.mypackage;
import java.awt.event.*;

要注意的是Java编译器为所有的程序都自动的导入了java.lang包,所以我们不需要再用import来导入了

注意:使用*只能表示本层次的所有类,不包含子层次下的类

当然我们可以在使用类的地方都指明包含该类的包,这样就可以不用import了,而当导入的几个包含有名字相同的类,则当使用该类时,必须指明包含他的包

e.g.

import java.util.*;
class myDate extends Date{
...
}

当然也可以给出该类全称来引入

class myDate extends java.util.Date{
...
}
  1. Java包的路径
    Java使用文件系统来存储包和类,类名就是文件名,包名就是文件夹名,若要引用Java包,则要告诉系统在哪找到
Java程序结构
  • package ---- //声明包 0个或1个
  • import -----//导入包,0个或多个
  • public class —//声明公有类,0个或1个,文件名与该类名相同
  • class ----//声明类,0个或多个
  • interface ----//声明接口,0个或多个
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值