java基础-包
浏览以下内容前,请点击并阅读 声明
为了使类型更容易查找和使用,避免命名冲突,以及可视范围的控制,程序员一般将相关的一些类型组合到一个包中。组合的类型包括类,接口,枚举和注释,枚举是一种特殊的类,而注释是一种特殊接口,所以说我们一般的类型包括接口和类。
java平台根据功能将一系列的类型按照功能组合成不同的包,例如基础类包含在java.lang中,而一些读写相关的类则在java.io中等等。
1 包的创建
创建一个包,首先要给一个包命名,然后在包中每一个类型的源代码文件的首行添加包的声明语句,注意声明语句只能有一条:
package packname;
一个源代码文件中可以定义多个类型,但是只能有一个类型定义为public,而且该源代码文件的名称必须与public类型的名称一致。当然一个源代码文件中可以有定义为非public的类型(强烈建议不要这样做),该类型是包外不可见的。
一个类型如果没有包的声明语句,那么该类型位于一个未命名的包中,未命名的包一般只用于一个临时的程序或者是开发的初期。
2 包的命名
不同的包中可以包含相同名称的类型。
一般情况下,包的名称都是小写的字母以区别于类和接口的名称 。公司会用他们保留的的网络域名来作为一个包的开始,例如域名为example.com的公司的员工将一个程序包命名为com.example.mypackage。
java语言内部的包一般以java.或者javax.开头。
有时公司的互联网域名会包含无效的字符,如短横杠-或者其他特殊字符,以数字开头,包含java的保留关键词等等,一般建议将其替换或者添加成下划线:
| 域名 | 包名称前缀 |
|---|---|
hyphenated-name.example.org |
org.example.hyphenated_name |
example.int |
int_.example |
123name.example.com |
com.example._123name |
3 包成员的使用
一个包内所含的类型又叫包成员。
要使用一个包内的包成员(public),只需按照以下完成一步:
- 通过全名引用成员
- 用import语句导入一个成员
- 用import语句导入整个包
3.1 通过全名使用包成员
对于一个不经常使用的类型,我们可以使用其全名来引用该类型,而无需使用import语句,如下所示:
//声明一个包名称为packagename类型名称为Type的类型的变量
packagename.Type var;
3.2 导入一个成员
import语句可以导入一个包中的指定成员,import语句位于package语句之后,在类声明之前。
//注意,import语句是在import之后跟上类型的全名,以分号结尾
import packagename.Type ;
使用import语句导入一个成员之后,在该源代码文件中就可以直接使用类型名称引用该类型了。
3.3 导入整个包
import语句还可以导入整个包,即整个包的成员,语法为在import关键词后跟上包的名称然后紧跟一个星号通配符*,如下所示:
//导入整个包
import packagename.* ;
注意,通配符*只能匹配包中的所有类型的名称,而不能匹配部分类型名称,一下import语句会编译出错:
//一下语句本意是匹配graphics包中所有以A开头的类型,但不能这样使用
//编译出错
import graphics.A*;
另外还有一种比较少用的import语句用法,可以导入一个类的嵌套类:
//以下语句会导入Rectangle类中的所有子类,但是不会导入Rectangle类本身
import graphics.Rectangle.*;
导入整个包之后,包中所有的类型都可以用类型名称来引用了。
为方便起见,java编译器会为每个源代码文件自动整个导入两个包:(1)java.lang和(2)当前类型所属的包
3.4 包分级
由包的名称看上去似乎是分等级的,例如java.awt,java.awt.color和java.awt.font包,后两者包名称以前者名称开头,然而java.awt并不包含java.awt.color和java.awt.font包以及类似于java.awt.xxxx格式的包,以下导入语句:
import java.awt.*;
并不会导入除java.awt包内的所有类以外的其他任何类型。
3.5 名称冲突
当含有相同类型名称的两个包被同时整个导入时,则必须使用类型的全名来引用导入的类型。
3.6 静态导入语句
当经常要用到某一个静态的类成员时,可以使用静态导入语句,这样,使用静态导入的静态类成员就可以直接使用其名称进行引用了,如
//一下语句导入Math.PI以后,便可使用PI直接引用该静态字段
import static java.lang.Math.PI;
//以下语句导入Math中所有的静态字段
import static java.lang.Math.*;
注意:静态导入语句虽然带来便利,但静态导入语句会使代码维护成本加大,因为导入的静态字段直接使用很难判断该字段来自哪里,只有恰当的使用才能带来最大的简洁性和易读性。
4 源代码文件和类文件的管理
许多java平台是依靠分级的文件系统管理源代码文件和类文件的。
java的源代码文件以后缀.java结尾,而编译源代码文件后产生以.class为后缀的文件,源代码文件和类文件在文件系统中的位置和所处包的名称的关系为:
如果包的名称为com.example,则其类型的源代码文件和类文件应该处于 com/example/目录下。
java基础-包的更多相关文章
- Java基础-包(package)的声明与访问
Java基础-包(package)的声明与访问 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.包的概念 Java中的包,其实就是我们电脑系统中的文件夹,包里存放的是程序员生成的 ...
- Java基础-包名和文件夹名字必须对应
.java文件夹中的包名必须与物理文件夹的对应. 如果修改包名或者文件夹名,双方都需要同时更新.
- JAVA基础——包机制
包机制 包的语法格式package pkg1[.pkg2[.pkg3...]] 一般利用 公司域名倒置 作为包名; 例如www.baidu.com,则建立报的名字com.baidu.www 一般不要让 ...
- java基础 lang包 详细介绍
Java.javax和org.其中以java开头的包名是JDK的基础语言包,以javax开头的属 (org是organization的简写).而在JDK API中还包含了一些以com.sun开头的包名 ...
- Java基础-Eclipse第三方安装包管理工具之Maven
Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...
- Java基础(十二):包(package)
一.Java 包(package): 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间.包的作用: 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹 ...
- build path libraries java基础--Jar包添加到build path方式说明--01
摘自: http://blog.csdn.net/haolongabc/article/details/7007701 java基础--Jar包添加到build path方式说明--01 前言:这段短 ...
- JDK框架简析--java.lang包中的基础类库、基础数据类型
题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含 ...
- 夯实Java基础系列5:Java文件和Java包结构
目录 Java中的包概念 包的作用 package 的目录结构 设置 CLASSPATH 系统变量 常用jar包 java软件包的类型 dt.jar rt.jar *.java文件的奥秘 *.Java ...
随机推荐
- Javascript实现前端简单路由
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http ...
- 关于Java集合的小抄
在尽可能短的篇幅里,将所有List.Map.Set.Queue的特征与实现方式捋一遍.适合所有"精通Java"其实还不那么自信的人阅读. List ArrayList 以数组实现. ...
- ecshop 导出exl表格
// 导出订单 if(isset($_POST['export'])){ // 统计金额 $sl = "SELECT SUM(goods_amount) as total from" ...
- Nancy总结(三)Nancy资料介绍
Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,可以基于 .NET 和 Mono 平台构建轻量级基于 HTTP 的Web 服务.它更多的是借鉴了Ruby的一些特性和Ruby的MVC ...
- Python之路【第十八篇】Django小项目简单BBS论坛部分内容知识点
开发一个简单的BBS论坛 项目需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可被 ...
- Spring系列之依赖注入的方式
一.依赖注入方式 对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象 ...
- [NHibernate]一对多关系(关联查询)
目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关 ...
- SVN如何查看修改的文件记录] 来源:Linux社区 作者:frogoscar
SVN如何查看修改的文件记录 [日期:2014-11-20] 来源:Linux社区 作者:frogoscar [字体:大 中 小] 主要是有四个命令,svn log用来展示svn 的版本作者 ...
- 大熊君JavaScript插件化开发------(第二季)
一,开篇分析 Hi,大家好!大熊君又和大家见面了,还记得昨天的那篇文章吗------这个系列的开篇(第一季).主要讲述了以“jQuery的方式如何开发插件”, 那么今天我们带着昨天的疑问来继续我们的插 ...
- R语言学习笔记-机器学习1-3章
在折腾完爬虫还有一些感兴趣的内容后,我最近在看用R语言进行简单机器学习的知识,主要参考了<机器学习-实用案例解析>这本书. 这本书是目前市面少有的,纯粹以R语言为基础讲解的机器学习知识,书 ...