




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter11大型程序的发展 在Java里 我们可以将大型程序内的类独立出来 分门别类地存到文件里 再将这些文件一起编译执行 如此的程序代码将更具亲和性且易于维护 本章将介绍大型程序的发展 类库的概念以及Java所提供的常用的类库 11 1文件的分割 在开发大型程序时 由于工作上的需要 程序代码的开发往往是有一些人 或几个小组同时进行 每个参与的小组或小组成员分别负责某些类 并肩编写好的类分别保存在各自的文件中 知道所有的类均开发好 在分别编译与执行 这种文件分割的方式 好处在于便于程序的开发与维护 在java里是如何实现文件的分割与编译呢 让我们再以CCircle类为例将编好的两个类分分开保存成两个文件 并置于同一个文件夹内 假设放在c java pack1文件夹内 CCircle java文本置于c java pack1文件夹下ClassCCircle 定义类CCircle Publicvoidshow System out println show methodcalled app11 1 java 文本置于c java pack1文件夹内Publicclassapp11 1 Publicstaticvoidmain Stringargs CCirclecir newCCircle Cir show 将文件创建好之后 在Java的环境里分别编译这两个文件 c java javacpack1 CCircle javac java javacpack1 app11 1 java 编译好之后 分别产生CCircle class与app11 1 class两个文件 如图11 1所示 运行程序 C java javapack1 app11 1 运行结果 Show methodcalled 通过以上实例大家应该可以了解如何编译运行分割过的Java文件了 11 2使用package package是在使用多个类或接口时 避免名称重复而采用的一种措施 怎么使用呢 在类或接口的最上面一行加上package的声明就可以了 11 2 1package的基本概念 Package的声明 Packagepackage名称 经过package的声明之后 在同一文件内的接口或类都被纳入相同package中 加上package的声明之后 编译与运行的过程与方法有所改变 一个实际的例子 app11 2是package使用的范例 请先建文件 再置于pack2文件夹内 注意存放app11 2 java的文件夹名称必须与package名称相同 app11 2 package的使用 此文件置于pack2文件夹内Packagepack2 ClassCCircle CCircle类已置于pakcagepack2中 publicvoidshow System out println show methodcalled publicclassapp11 2 将CCircle类也纳入packagepack2当中 publicstaticvoidmain Stringargs CCirclecir newCCircle cir show 编译app11 2 java c java javac app11 2 java 让我们检查pack2文件夹就会发现产生CCircle class app11 2 class这样两个文件 如图11 2所示 执行app 2 需要特别注意的两点 C java javapack2 app11 2 执行结果 Show methodcalled 1 编译时必须输入 文件夹名称 Java文件名 2 运行时必须输入 package名称 类名称 11 2 2将独立分开的类纳入同一个package中 问题 当类存在不同的文件 但隶属于同一个package 那么怎样编译与运行呢 首先 现在Java的文件夹下创建一个子文件pack3 然后 在分别创建下列两个文件 并将其保存在pack3文件内 Packagepack3 将CCircle类纳入packagepack3中ClasssCCircle Publicvoidshow System out println show methodcalled Packagepack3Publicclassapp11 3 Publicstaticvoidmain Stringargs CCirclecir newCCircle cir show 编译app11 3 运行app11 3 C java javacpack3 app11 3 javaC java javacpack3 CCircle java c Java javapcke3 app11 3 运行结果 Show methodcalled 由本例中 读者可看到不论有几个类 分成几个文件 只要在每个文件面加上package名称 便可将它们归属于同一个package 如图11 4所示 其他程序代码的编写和先前介绍过的方法均完全相同 11 3访问在不同package里的类 到目前为止 我们所介绍的类都是隶属于同一个package 因此在程序码的编写上并不需要做修改 但如果几个类分别属于不同的package时 某个类要访问到其他类的成员时 则必须做下列的修改 若某个类需要被访问时 则必须把这个类公开出来 也就是说 此类必声明成public 若要访问不同package内某个public类的成员时 在程序代码内必须明确指明 被访问package的名称 类名称 CCircle java CCircle java此文件存放在pack4b文件夹下packagepack4b PublicclassCCircle 将CCircle类纳入pack4中 Publicvoidshow System out println show methodcalled 11 3 1简单的范例 编译程序 app11 4 java此文件存放在pack4a中Packagepack4a Publicclassapp11 4 Publicstaticvoidmain Stringargs Pack4b CCirclecir newpack4b CCircle cir show c java javacpack4a app11 4 javac java pack4b CCircle java 运行结果 c java javapack4a app11 4 Show methodcalled 运行程序 1 把CCircle类公开出来 也就是CCircle类必须声明称public 必须以 被访问package的名称 类名 的格式来编写 2 访问位于不同package里的类时 被访问的类必须声明称public 否则 出错 在本例中我们学要注意两点 下面我们通过图例来解释这种访问关系 图11 5访问位于不同package里的类 11 3 2publicprivate与protected修示符的角色 表11 1成员与构造函数所使用的修示符 表11 2类与接口所示用的修示符 在app11 4中我们是通过 被访问的package名称 类名称 的语法来访问位于不同包里的类 很显然这不是一种好的方法 那么 有没有更好的方法呢 答案是肯定的 我们可以将要被访问包的package整个导入程序代码中 如此以来问题就更为简化了 11 3 3导入package 导入包格式 Importpackage名称 类名称 一个使用导入包的范例 CCircle javapackage的使用 四 此文件置于pack5b文件夹内packagepack5b publicclassCCircle publicvoidshow System out println show methodcalled app11 5 java package的使用 四 此文件置于package5aPackagepack5a Importpack5b CCircle 加载pack5bpackage里的CCircle类 Publicclassapp11 5 publicstaticvoidmain Stringargs CCirclecir newCCircle 不用再写package的名称cir show 当package越建越多时 将package分门别类也就更加重要 某些packag依功能划分 可再细分为几个 子package sub package 这种分类 packages划分为上下层次的关系 使得程序代码的编写与维护更加容易 11 4构造package的层次关系 那么 在Java里要如何创建package的层次关系呢 假设app11 6类隶属于packagepack6 CCircle与CRectangle类分别属于packagesubpack1与subpack2 而希望把subpack1与subpack2设成pack6的sub package 在这种情形下 可以先创建app11 6 subpack1与subpack2三个文件夹 其中subpack1与subpack2为app11 6的子文件夹 接着把app11 6 java存在pack6文件夹里 再分别把CCricle java与CRectangle java存到subpack1与subpack2文件夹内 即可完成package层次的设置 图11 7为文件夹与所存放的Java源文件的层次关系图 图11 7的文件夹层次关系可转化成package的层次关系图 图11 8 程序实现 CCircle java 此文件置于pack6 subpack1文件夹下Packagepack6 subpack1 PublicclassCCircle Publicvoidshow System out println show methodofclaasCCirclecalled CRectangle java 此文件夹置于pack6 subpack2文件夹下packagepack6 subpack2 PublicclassCRectangle publicvoidshow System out println show methodofclassCRectanglecalled app11 6 java 将此文件置于pack6文件夹内packpack6 将app11 6类纳入packagepack6中Importpack6 subpack1 CCircle 加载pack6 subpack1里的CCircle类Importpack6 subpack2 CRectangle 加载pack6 subpack2里的CRectangle类publicclassapp11 6 publicstaticvoidmain Strngargs 编译Circle java CRectangle java与app11 6 java 运行app11 6 class c java javacpack6 subpack1 CCircle javac java javacpack6 subpack2 CRectangle javac java javacpack app11 6 java c java javacpack6 app11 6 运行结果 Show methodinclassCCirclecalledShow methodinclassCRectanglecalled CCirclecir newCCircle CRectanglerect newCRetangle cir show rect show 11 5Java常用的类库 类库 通俗地讲就是用来存放类和接口的地方 图11 10绘出了类库 子类库 类与接口之间的层次关系 Java提供的类很多 但常用的就几个 表11 3列出了Java常用类库及其主要功能 表11 3Java常用的类库 Java类库提供的功能非常强大 用活用会类库无疑会起到事半功倍的效果 如何使用类库呢 请看下面的实例 实例一 导入java awt类库里的Button类 可用下面的语法 importjava awt Button 导入java awt类库里的Button类 实例二 导入多个类 如java awt类库里的Button Canvas可用下面的语法 importjava awt Button 导入java awt类库里的Button类importjava awt Canvas 导入java awt类库里的Canvas类 实例三 导入类库里的所有类 通过通配符 来导入 Importjava awt 导入java awt类库里所有的类 注意事项 当我们用通配符导入类库里的所有类时 该类库的子类不会导入的 11 5 1有关字符串的关系 创建字符串对象 用String声明字符串变量 然后赋值给它 如下范例 Stringstr abc 利用字符数组产生字符串 如下范例 chardata a b c 设置data为字符a b c所组成的数组stringstr newString data 利用String 构造函数产生字符串 直接利用String构造函数来创建 如下范例 Stringstr newString abc 尽管这三种方法都可以创建字符串 通过比较不难发现 采用的一种方法较为简便 表11 4列出了第二种与第三种所使用的构造函数的格式 String类构造函数的格式 表11 4 表11 5String类常用的方法 String类使用的范例 app11 7 String类使用的范例publicclassapp11 7 publicstaticvoidmain Stringargs Stringstr HelloJava System out println charAt 6 str charAt 6 System out println length str length System out println substring str substring 6 System out println startwith He str startsWith He System out println uppercase str toUpperCase app11 7OUTPUT Length 12charAt 6 Jsubstring Java startwith He trueUppercase HELLOJAVA 由于String类只提供了一些查找与测试的方法 如果要用字符串做连或修改 String类就没有提供 所以只能用StringBuffer类库里提供的方法 11 5 2StringBuffer类库 表11 6StringBuffer类常用的方法 StringBuffer类使用的范例 app11 8 StringBuffer类使用的范例publicclassapp11 8 publicstaticvoidmain Stringargs StringBufferstr newStringBuffer moon 11 5 3wraperclass 基于效率上的考虑 原始数据类型 primitive 如byte short char int long float double等均不被看成是对象 虽然如此 Java还是提供了一些特殊的类 让原始数据类型在使用上尤如对象一般 这些特殊的类称之为wrapperclass app11 8OUTPUT length 11moon dogssgod noomsgod noom 表11 7原始数据类型与相对应的wrapperclass 所谓的wrap就是把东西包装起来之意 因此wrapperclass便是把原始数据类型包装起来 并且额外提供相关的功能 wrapperclass所提供的变量均属 类变量 且wrapperclass所提供的方法均是 类方 例如 在第3章表3 2所介绍的各种类型的最大值与最小值代码 均是属于 类变量 且定义在它们相对应的wrapperclass里 表11 8各种类常用的转换函数 例子 Integerclass方法的应用 01 app11 9 Integerclass方法的应用02publicclassapp11 903 04publicstaticvoidmain Stringargs 05 06Stringstr 07intinum 0809inum Integer parseInt 123 4 10System out println inum 11str Integer toString inum 4 12System out println str 13 14 app11 9OUTPUT 1271274 第9行把字符串 123 转换成整数 加上4之后再设给整数变量inum 因此第10行可输出数字127 第11行则是把整数转换成字符串 再与字符串 4 相连结 因而12行输出字符串 1274 11 5 4使用math类 Math类是置于java lang类库里的一个类 它所提供的方法可用来计算相关的数学函数 Math类所提供的变量为类变量 提供的方法为类方法 表11 9Math类提供的类变量 表11 10Math类提供的部分类方法 使用Math类的实例 app11 10 数学函数的使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023-2024学年陕西省安康市高二下学期期末质量联考数学试卷(解析版)
- 高中英语选择性必修四课本同步课件UNIT-4-SHARING-Using-Language
- 随申如何开委托书
- 公积金委托协议风险
- 对不好的员工评语
- 食堂用餐文化建设
- 作业帮新员工管理制度
- 供暖公司计量管理制度
- 供水企业行政管理制度
- 供水收费大厅管理制度
- 2023年国开(中央电大)04114《会计学概论》题库及标准答案
- 广东省广州市天河区2024年八年级下册数学期末考试试题含解析
- 中建测评2024二测题库及答案
- 24春国家开放大学《统计学原理》形成性考核1-3参考答案
- 环卫保洁整体服务方案
- 小学数学小组合作学习有效性课题研究结题报告
- 磁控溅射原理详细介绍课件
- 线路人工起道捣鼓作业指导书
- 大学语文(第三版)课件 渔父
- 提升医患沟通效果的标准化培训指南
- 企业专职消防队建设标准
评论
0/150
提交评论