




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章常用系统类 本章主要内容1 Applet类2 输入输出流类3 数学函数类4 日期类5 随机数类6 向量类 5 1Applet类 Applet是一种特殊的Java程序 经过编译后可被嵌入到HTML文件中 并由Web浏览器内置的Java解释器执行 所有Applet都继承自同一个类 java applet Applet 这个类是Java语言的基础类 有关Applet的所有特性都被定义在这个类中 5 1 1Applet的特点 Applet是一种在Web页中运行的小应用程序 Java的Applet与Application有一个明显的区别 Application是独立程序 可直接通过Java解释器来解释运行 而Applet只能在Web浏览器上运行 必须通过标签将编译后的字节码文件嵌入到Web页中 5 1 2创建Applet 创建applet需要导入java applet包中的Applet类由于paint方法是AWT的一部分 所以我们这里也导入java awt包中的AWT类importjava applet Applet importjava awt publicclassappletextendsApplet 类applet继承自Applet类 publicvoidpaint Graphicsg Graphics类的g对象传递给paint g drawString hellofromjava 60 100 开始位置 用g对象的drawString方法实际绘制文本 5 1 3运行Applet 文件名字为abc html可以直接显示 也可以用appletviewer查看C appletviewerabc html 在代码中嵌入标记 将标记直接放入applet java文件中 可以不用Web页面测试 创建appletviewerapplet java观看CODE applet classWIDTH 200HEIGHT 200 importjava applet Applet importjava awt publicclassappletextendsApplet publicvoidpaint Graphicsg g drawString hellofromjava 60 100 运行结果 5 2输入输出 I O 流类 1 数据流 Stream 与数据流是传递信息数据的载体 是程序中的数据所经历的路径 流分为输入流与输出流两大部分 数据是指一组有顺序的 有起点和终点的字节集合 数据的发送者与数据接收者可以是 一个文件 磁盘 内存 另一个程序或是网络 数据可以是不同的格式 字符串 图像 声音或对象等 2 输入流与输出流 建立数据流实际上就是建立数据传输通道 将起点和终点连接起来 例如 程序要读写文件 可以在程序和文件之间建立一个数据流 如果要从文件中读数据 则文件是起点 程序是终点 写入数据 则刚好相反 输入流只能读不能写 而输出流只能写不能读 java io包中具体声明了用于读写操作的输入流与输出流类 例如 FileInputStream 文件输入流类 ObjectOutputStream 对象输出流类 3 缓冲流 对数据流的每次操作是以字节为单位进行 即可以向输入流或输出流中读取或写入一个字节 显然这样的数据传输效率很低 为了提高数据传输效率 通常使用缓冲流 bufferedstream 即为一个流配有一个缓冲区 buffer 当向一个缓冲流写入数据时 系统将数据发送到缓冲区 而不是直接发送到外部设备 缓冲区自动记录数据 当缓冲区满时 系统将数据全部发送到相应设备 5 2 2Java的标准数据流 标准输入输出指在字符方式下 如DOS提示符 程序与系统进行交互的方式 键盘和显示器屏幕是标准输入输出设备 数据输入的起点为键盘 数据输出的终点是屏幕 输出的数据可以在屏幕上显示出来 标准输入输出的功能是通过Java中的系统类System实现的 System类在java lang包中 有三个静态的成员变量 in out和err 可以在程序中直接调用它们 1 标准输入System in System in作为InputStream类的对象实现标准输入 可以调用它的read方法来读取键盘数据 read方法有3种格式 publicabstractintread publicintread byte b publicintread byte b intoff intlen 如果输入流结束 返回 1 发生I O错时 会抛出IOException异常 2 标准输出System out System out作为PrintStream打印流类的的对象实现标准输出 可以调用它的print println或write方法来输出各种类型的数据 print和println的参数完全一样 不同之处在于println输出后换行而print不换行 write方法用来输出字节数组 在输出时不换行 例5 6从键盘输入字符 在屏幕显示输出数据 如图所示 classIO1 publicstaticvoidmain String args throwsjava io IOException bytebuffer newbyte 40 System out println 从键盘输入不超过40个字符 按回车键结束输入 intcount System in read buffer 读取标准输入流System out println 保存在缓冲区的元素个数为 count System out println 输出buffer元素值 for inti 0 i count i System out print buffer i System out println System out println 输出buffer字符元素 System out write buffer 0 buffer length 5 2 3java io包中的数据流类 java io包封装了大量的数据流类 支持基于字节流的数据流和基于字符流的数据流 基本流类有4个 它们都是抽象类 它们是基于Unicode字符的输入流Reader和输出流Writer 基于二进制字节的输入流InputStream和输出流OutputStream 其它所有数据流类都是从它们中派生出来的子类 5 2 4数据流的应用 例5 7基于字符型的文件输入输出流与缓冲流的应用 该程序具有复制文件 在屏幕显示文件内容的功能 运行结果如图所示 importjava io publicclassIO2 publicstaticvoidmain String args throwsIOException FileReaderin newFileReader Hello java 建立文件输入流BufferedReaderbin newBufferedReader in 建立缓冲输入流FileWriterout newFileWriter Hello txt true 建立文件输出流Stringstr while str bin readLine null System out println str out write str n in close out close 5 3数学函数类Math Math是一个最终类 含有基本数学运算函数 如指数运算 对数运算 求平方根和三角函数等 可以直接在程序中加Math前缀调用 下面是其成员变量和常用成员方法 举例说明 staticdoubleE 数学常量estaticdoublePI 圆周率 staticdoublesin doublea 正弦函数staticdoublecos doublea 余弦函数staticdoubletan doublea 正切函数staticdoubleexp doublea 常数e的a次幂 5 4日期类 Java提供了3个日期类 Date Calendar和DateFormat 提供了日期和时间操作 在程序中 对日期的处理主要是如何获取 设置和格式化 Java的日期类提供了很多方法以满足程序员的各种需要 其中 Date主要用于创建日期对象并获取日期 Calendar可获取和设置日期 DateFormat主要用来创建日期格式化器 Java语言规定的基准日期为1970 1 100 00 00格林威治 GMT 标准时 例5 10日期的获取 设置和格式化 如图所示 importjava text importjava util importjava awt importjava applet publicclassDate1extendsApplet publicvoidpaint Graphicsg Datetoday Calendarnow DateFormatf1 f2 Strings1 s2 today newDate 获取系统当前日期g drawString 字符串格式 today toString 20 20 f1 DateFormat getInstance 以默认格式生成格式化器s1 f1 format today 将日期转换为字符串g drawString 系统格式 s1 20 40 生成长格式的中国时间格式化器 f2 DateFormat getTimeInstance DateFormat LONG Locale CHINA s2 f2 format today 将日期转换为时间字符串g drawString 中国格式 s1 s2 20 60 now Calendar getInstance 获取系统时间s1 now get now HOUR 时 now get now MINUTE 分 now get now SECOND 秒 g drawString 调整前时间 s1 20 80 now set 2001 2 15 9 9 9 today now getTime g drawString 调整后时间 today toString 20 100 5 5随机数类Random 随机数类Random 提供了随机数生成器 Random有两个构造方法 Random Random longseed 前者使用系统时间作为种子数 后者使用指定的种子数 构造方法只是创建了随机数生成器 必须调用生成器的方法才能产生随机数 Random具有nextBoolean nextInt等方法 例5 11生成各种类型的随机数 如图所示 importjava util classRD1 publicstaticvoidmain Stringargs Randomr1 newRandom 1234567890L Randomr2 newRandom 1234567890L booleanb r1 nextBoolean 随机数不为0时取真值inti1 r1 nextInt 100 产生大于等于0小于100的随机数inti2 r2 nextInt 100 同上doubled1 r1 nextDouble 产生大于等于0 0小于1 0的随机数doubled2 r2 nextDouble 同上System out println b System out println i1 System out println i2 System out println d1 System out println d2 5 6向量类Vector 向量类Vector 提供了类似于可变长数组的操作 Java中的数组只能保存固定数目的元素 且必须把所有需要的内存单元一次性的申请出来 而不能先创建数组再追加数组元素数量 为了解决这个问题Java中引入了向量类Vector Vector也是一组对象的集合 但相对于数组 Vector可以追加对象元素数量 可以方便的修改和维护序列中的对象 Vector被设计成一个能不断增长的序列 用来保存对象引用 在创建Vector对象时可以指定初始容量和增量 每次添加元素都将使向量长度按增量自动增长 向量 Vector 是java util类包提供的一个工具类 Vector类似于可变长数组 但功能更加强大 任何类型的对象都可以放入Vector 通过调用Vector封装的方法 可以随时添加或删除向量元素 以及增加或缩短向量序列的长度 向量比较适合在如下情况下使用 1 需要处理的对象数目不定 序列中的元素都是对象或可以表示为对象 2 需要将不同类的对象组合成一个数据序列 3 需要做频繁的对象序列中元素的插入和删除 4 经常需要定位序列中的对象和其他查找操作 5 在不同的类之间传递大量的数据 Vector类的方法相对于数组要多一些 但是使用这个类也有一定的局限性 例如其中的对象不能是简单数据类型等 1 创建向量类的对象Vector类的三个构造函数 Vector 构造一个空的向量Vector intcapacity 以指定的存储容量构造一个空的向量Vector intcapacity intcapacityIncrement 以指定的存储容量和容量增量构造一个空的Vector 例如 VectorMyVector newVector 100 50 这个语句创建的MyVector向量序列初始有100个元素的空间 以后以50为单位递增 使序列中元素的个数变化成150 200 在创建Vector序列时 不需要指明序列中元素的类型 可以在使用时确定 2 向向量序列中添加元素 有两种添加元素的方法 addElement Objectobj 将新元素添加到序列尾部 insertElementAt Objectobj intindex 将新元素插入到指定位置 下面是使用这两种方法的例子 VectorMyVector newVector for inti 1 i 10 i MyVector addElement newRandom MyVector insertElementAt middle 5 3 修改或删除向量序列中的元素使用以下方法修改或删除向量序列中的元素 1 setElementAt Objectobj intindex 将向量序列index位置处的对象元素设置成为obj 如果这个位置原来有元素则被覆盖 2 removeElement Objectobj 删除向量序列中第一个与指定的obj对象相同的元素 同时将后面的元素前提 补上空位 3 removeElementAt intindex 删除index指定位置处的元素 同时将后面的元素前提 4 removeAllElements 清除向量序列中的所有元素 4 查找向量序列中的元素常用于查找向量序列中某元素的方法如下 1 ObjectelementAt intindex 返回指定位置处的元素 一个要注意的问题 由于返回的是Object类型的对象 在使用之前通常需要进行强制类型转换 将返回的对象引用转换成Object类的某个具体子类的对象 例如 Stringstr String MyVector elementAt 0 2 booleancontains Objectobj 检查向量序列中是否包含指定的对象元素obj 3 intindexOf Objectobj intstart index 从指定的start index位置开始向后搜索 返回所找到的第一个与指定对象obj相同的元素的下标位置 若指定的对象不存在 则返回 1 4 intlastIndexOf Objectobj intstart index 从指定的start index位置开始向前搜索 返回所找到的第一个与指定对象obj相同的元素的下标位置 若指定的对象不存在 则返回 1 例如 inti 0 While i MyVector indexOf welcome i 1 System out println i 5 Vector中的其他方法capacity 返回Vector的容量clone 建立Vector的备份copyInto Object 把Vector中的元素拷贝到一个数组中firstElement 返回第一个元素lastElement 返回最后一个元素isEmpty 判断是否为空setSize intsize 设置Vector的大小size 返回Vector中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行业廉洁教育测试题及答案
- 煤矿后勤专业试题及答案
- 铁路专业试题及答案
- 烹饪专业考证试题及答案
- 航空服务专业试题及答案
- 河北省衡水市桃城区2025-2026学年高二暑假开学考试语文试卷(含答案)
- 《烹饪原料初加工工艺》项目五配菜
- 小学数学专业知识考试试题及答案
- 质量专业试题及答案
- 马克笔建筑方案设计
- 智能控制技术发展前景分析
- T-CCASC 0043-2024 氯碱工业数字化车间建设指南 电解
- 2024年西安医学院第一附属医院招聘真题
- 卡西欧 fx-991CN X 科学计算器使用说明书
- 排污许可条例培训课件
- 婴儿配方奶粉管理办法
- 2025年新疆中考数学试卷真题(含答案解析)
- 中央厨房体系管理制度
- GB/T 19437-2025印刷技术印刷图像的光谱测量和色度计算
- 2025至2030中国医疗服务行业产业运行态势及投资规划深度研究报告
- 宾馆内部治安管理制度
评论
0/150
提交评论