




已阅读5页,还剩80页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章常用系统类,主要任务:介绍Java常用的系统类,包括JavaApplet、字符串类、输入输出流类、数学函数类、日期类、随机数类以及向量类等。,本章主要内容,1.Applet类2.字符串类3.输入输出流类4.其他常用类,7.1Applet类,7.1.1Applet的特点,Applet是一种在Web页中运行的小应用程序。Java的Applet与Application有一个明显的区别:Application是独立程序,可直接通过Java解释器来解释运行;而Applet只能在Web浏览器上运行,必须通过标签将编译后的字节码文件嵌入到Web页中。,Applet安全基础,Applet被设计为从远程站点下载然后在本地执行,所以安全问题非常重要。如果用户在游览器中启用了Java,那么浏览器就会自动下载网页中的Applet代码并执行。用户没有机会来确认或者停止Applet的运行。Applet的限制执行环境常常称作“沙箱(sandbox)”。运行在沙箱中的Applet不能更改或探查用户的系统。,Applet的限制有以下几个方面,不能加载库函数或定义本地方法。不能读写本地计算机上的文件系统。除了下载它的服务器外不能和其它主机建立网络通讯。不能运行本地计算机上的任何程序。不能读取某些系统特性。Applet打开的窗口和Application打开的窗口在外观上有所不同。,Applet能够做的事情:,可以和它所在的Web服务器建立网络连接。能使Web浏览器方便地显示HTML文档内容。离开网页后Applet可以继续运行也可以停止运行。可在状态栏显示短信息。可以调用同一个网页上的其它Applet中的公共方法。可以播放声音文件。可以从HTML的标签中获取参数。从本地计算机上加载Applet时没有从网络加载时所附带的限制。,7.1.2Java和HTML的关系,HTML是网页设计语言,它采用一整套标记来定义Web页。一个HTML文件可定义一个Web页,文件的扩展名为.html或.htm。HTML可以没有Applet,但很多重要功能将无法实现,而Applet有赖于HTML才能运行。,7.1.2Java和HTML的关系,含有JavaApplet的Web页,Web页源文件部分内容,7.1.3Applet的生命周期与主要活动,程序运行从开始到结束的过程称为程序的生命周期。独立应用程序的生命周期从main()方法开始,直到运行结束。而Applet应用程序的生命周期与浏览器相关。作为浏览器的一部分,Applet程序何时运行,何时结束都由浏览器控制,Applet对象只是作为浏览器窗口中运行的一个线程。,浏览器与Applet具有如下关系:,在浏览器中打开包含Applet对象的页面时,创建并初始化其中的Applet对象。显示Applet时,启动Applet线程运行。不显示Applet时,停止Applet线程运行。在浏览器中关闭页面窗口时,销毁Applet对象。,例7.1一个显示生命周期的Applet,如图所示。,importjava.Applet.Applet;importjava.awt.Graphics;publicclassLifeextendsAppletStringBufferbuffer=newStringBuffer();publicvoidinit()addWords(初始化.);publicvoidstart()addWords(开始.);publicvoidstop()addWords(停止.);,publicvoiddestroy()addWords(清除.);voidaddWords(Strings)System.out.println(s);buffer.append(s);repaint();publicvoidpaint(Graphicsg)g.drawString(buffer.toString(),5,15);,Applet的生命周期,Applet的主要活动内容,1初始化2开始运行3停止运行4清除5画出(显示)6刷新,7.1.4HTML和Applet的参数传递,HTML语言有一个标签,可加入各种属性来指定与Applet有关的内容,其中code、width、height是必选属性。如果需要向Applet传递参数,可通过param标签来指定。,例7.2Applet的参数传递,如图所示。,importjava.Applet.Applet;importjava.awt.Graphics;publicclassAP2extendsAppletStringstring=null;intx,y;publicvoidinit()string=getParameter(message);x=Integer.parseInt(getParameter(xPos);y=Integer.parseInt(getParameter(yPos);,publicvoidpaint(Graphicsg)if(string!=null)g.drawString(string,x,y);g.drawString(参数x为+x,30,60);g.drawString(参数y为+y,30,90);,相应的AP2.html文件内容如下:,7.1.5Applet标签属性,语法格式如下:alternateHTML,例7.3通过参数给Applet程序传递不同字号、不同颜色、文本内容的例子。如图所示。,AP3.html代码如下:其中,颜色的值为16进制数007000。,AP3.java源程序代码如下:importjava.Applet.*;importjava.awt.*;publicclassAP3extendsAppletprivateStringtext;privateintsize,color;publicvoidinit()text=getParameter(text);/获得文本参数size=Integer.parseInt(getParameter(size);/获得字体大小color=Integer.parseInt(getParameter(color),16);/获得颜色值,publicvoidpaint(Graphicsg)Colorc=newColor(color);g.setColor(c);Fontf=newFont(,1,size);g.setFont(f);g.drawString(text,10,50);/显示指定大小颜色的字符串,Applet的执行,1.要在支持Java的浏览器中查看Applet,则需要加载HTML文件。Applet会显示为HTML网页的一部分。要运行Applet,浏览器必须启用Java插件2.在命令提示符处键入下列代码:appletviewerAP3.html,Applet和Application,7.2字符串类,Java中的字符串也是类。由于使用频繁,有时也被视为基本类型遇到双引号自动创建String类的对象提供字符串运算符,字符串的连接:+定长字符串:String类(效率较高)不能更改可变字符串:StringBuffer类(使用灵活)可追加、插入、修改,但内存管理复杂,7.2.1字符串常量,使用“”定义字符串,使用定义字符。“abc”,”欢迎使用Java”都是字符串。a,b,c都是字符。Java会自动为字符串常量生成一个String类的对象,所以可以直接初始化String对象,如:Strings=“Helloworld!”,例7.4字符串的翻转,如图所示。,importjava.Applet.Applet;importjava.awt.Graphics;publicclassStringReverseextendsAppletpublicvoidpaint(Graphicsg)Stringstr=Thisisateststring;g.drawString(正常字符串:+str,30,30);g.drawString(翻转字符串:+reverse(str),30,60);,publicStringreverse(Strings)intlen=s.length();StringBufferbuffer=newStringBuffer(len);for(inti=len-1;i=0;i-)buffer.append(s.charAt(i);returnbuffer.toString();,利用构造方法创建String类对象,利用构造方法创建StringBuffer类对象,7.2.2字符串类的构造方法,例7.5字符串的构造方法,如图所示。,importjava.io.*;importjava.Applet.Applet;importjava.awt.Graphics;publicclassStringDemoextendsAppletbyteb=A,b,y,t,e,a,r,r,a,y;charc=A,c,h,a,r,a,r,r,a,y;Strings1,s2,s3,s4,s5,s6,s7,s8,s9;StringBufferb1,b2,b3;,publicvoidinit()b1=newStringBuffer();/创建一个空StringBuffer对象b2=newStringBuffer(10);/创建长度为10的空StringBuffer对象b3=newStringBuffer(Astringbuffer);/以字符串为参数创建StringBuffer对象s1=newString();/创建一个空String对象s2=newString(Astring);/以字符串为参数创建String对象s3=newString(b3);/以StringBuffer对象为参数创建String对象s4=newString(b);/以b为参数创建String对象,8位字节自动转为16位字符,s5=newString(b,2,4);/从b的第3位,取4个元素为参数创建String对象try/如果下面的字符集编码不存在将抛出异常s6=newString(b,2,10,GBK);/同s5,最后的字符串参数为字符集编码s7=newString(b,GBK);/同s4,最后的字符串参数为字符集编码catch(UnsupportedEncodingExceptione)/捕获异常s8=newString(c);/以字符数组c为参数创建String对象s9=newString(c,2,4);/从c的第3位,取4个元素为参数创建String对象,publicvoidpaint(Graphicsg)g.drawString(s1=+s1,20,20);g.drawString(s2=+s2,20,35);g.drawString(s3=+s3,20,50);g.drawString(s4=+s4,20,65);g.drawString(s5=+s5,20,80);g.drawString(s6=+s6,20,95);g.drawString(s7=+s7,150,20);g.drawString(s8=+s8,150,35);g.drawString(s9=+s9,150,50);g.drawString(b1=+b1.toString(),150,65);g.drawString(b2=+b2.toString(),150,80);g.drawString(b3=+b3.toString(),150,95);,7.2.3String类的应用,1求字符串长度publicintlength()可返回字符串长度。例如:Strings=欢迎使用Java语言;intlen=s.length();len的值为10。注意:Java采用Unicode编码,每个字符为16位长,因此汉字和其它符号一样只占用一个字符。另外,字符串的length方法和表示一个数组长度的length是不一样的,后者是一个实例变量。,2字符串连接,publicStringconcat(Stringstr)可返回一个字符串,它将把参数str添加在原字符串的后边。例如:to.concat(get).concat(her)的返回值为“together”。但在Java中,更多地是用“+”来连接字符串。例如:Stringstr=hello;str=str+world!;,3字符串截取,字符串截取有两个途径:一次截取一个字符或一次截取一个子串。前者可通过charAt方法(参见例7.4),后者使用substring方法。它有两种形式:Stringsubstring(intstart)Stringsubstring(intstart,intend)其中start代表起始位置,end代表结束位置。例如:Stringstr=ashortstring;Strings1=str.substring(2);Strings2=substring(8,14);,4字符串比较,有两组方法用于字符串比较,一组是equals,用于比较两个字符串是否相等,返回值为布尔值。一组是compareTo,用于按字符顺序比较两个字符串,返回值为整型数。共有5个方法:booleanequals(Objectobject)booleanequalsIgnoreCase(Stringstr)/忽略字符大小写intcompareTo(Objectobject)intcompareTo(Stringstr)intcompareToIgnoreCase(Stringstr)/忽略字符大小写,5拷贝到字符串,一个字符数组的内容可以全部或部分地拷贝到一个字符串中。有两个静态方法用于这种拷贝:staticStringcopyValueOf(chardata)staticStringcopyValueOf(chardata,intoffset,intcount)例如:charc=A,c,h,a,r,a,r,r,a,y;Strings1=newString(),s2=newString();s1=s1.copyValueOf(c);s2=s2.copyValueOf(c,2,4);,6字符串大小写转换,一个字符串可以整体转换为大写或小写字符,例如:Strings1=allislowercase;Strings2=SomeIsUppercase;s1=s1.toUpperCase();s2=s2.toLowerCase();结果是s1的字符全部为大写,s2的字符全部为小写。,7字符串检索,你可以在一个字符串中检索指定字符或子串的位置,如果检索到将返回一个代表位置的整数,否则返回值为-1。有两组方法实现这种操作,indexOf方法返回字符或子串首次出现的位置,lastIndexOf方法返回字符或子串最后一次出现的位置。我们各选择两个典型的方法来说明这种检索操作:intindexOf(intch)intindexOf(Stringstr)intlastIndexOf(intch)intlastIndexOf(Stringstr),8字符串转换为数组,字符串可以转换为字节数组或字符数组,这种转换在Java流处理中十分有用。字符串转为字节数组将进行特别处理,因为字符是16位长,而字节为8位长,所以要将字符的高8位去掉,只保留低8位成为一个字节。有3个方法:bytegetBytes()/按系统缺省字符集编码转换为字节数组bytegetBytes(Stringenc)/其中enc为字符集编码,参见例7.5chartoCharArray()/转换为字符数组,9转换为字符串,String类提供了一组valueOf方法用来将其它数据类型转换成字符串,其参数可以是任何数据类型(byte类型除外)。它们都是是静态的,也就是说不必创建实例化对象即可直接调用这些方法,其基本用法为:valueOf(数据类型)。例如:chardata=a,b,c,d,e;System.Out.println(String.valueOf(12D);System.Out.println(String.valueOf(32);System.Out.println(String.valueOf(data,1,3);,String类的常用方法,7.2.4StringBuffer类的应用,StringBuffer提供的方法有一些与String相同,有一些不同。最主要的方法有两组,一组是append,另一组是insert,每组各有10个方法。,1append方法,append的10个方法主要在参数上有所不同,它可以把各种数据类型转换成字符串后添加进来(byte类型除外),其基本用法为:append(数据类型)。,2insert方法,insert方法和append方法在使用上非常类似,唯一的不同是多了一个位置参数,该参数必须大于等于0。其基本用法为:insert(插入位置,数据类型)。例如:chardata=a,b,c,d,e;StringBufferbuffer=newStringBuffer();buffer.insert(0,100);buffer.insert(0,2.5F);buffer.insert(3,*);buffer.insert(0,250.0D);buffer.insert(5,isequalto);最后,buffer的内容为“250.0isequalto2.5*100”。,3其它方法,下面几个方法对程序员来说是经常用到的:publicStringBufferdelete(intstart,intend)/删除子串publicStringBufferdeleteCharAt(intindex)/删除指定位置上的字符publicStringBufferreplace(intstart,intend,Stringstr)/替换子串StringBufferreverse()/翻转字符串,什么是数据流?流是可被顺序访问的无限长的字符序列。,在java中有关流的操作使用io包importjava.io.*;,7.3输入输出(I/O)流类,7.3输入输出(I/O)流类,数据流:是指在计算机的输入输出之间运动的数据序列。输入输出是相对程序来说的,程序扮演两个角色:源和目的。输入流:代表从外设流入程序的数据序列;输出流:代表从程序流向外设的数据序列。字节流:在输入输出过程中以字节为单位。字符流:在输入输出过程中以字符为单位。,输入输出类层次,7.3.2Java的标准数据流,1.标准输入publicstaticfinalInputStreamin使用read()和skip(longn)方法读取。2.标准输出publicstaticfinalPrintStreamout使用print()和println()来输出。3.标准错误输出publicstaticfinalPrintStreamerr,1标准输入System.in,System.in作为InputStream类的对象实现标准输入,可以调用它的read方法来读取键盘数据。read方法有3种格式:publicabstractintread()publicintread(byteb)publicintread(byteb,intoff,intlen)如果输入流结束,返回-1。发生I/O错时,会抛出IOException异常。,2标准输出System.out,print和println的参数完全一样,不同之处在于println输出后换行而print不换行。write方法用来输出字节数组,在输出时不换行。,例7.6从键盘输入字符,在屏幕显示输出数据。如图所示。,classIO1publicstaticvoidmain(Stringargs)throwsjava.io.IOExceptionbytebuffer=newbyte40;System.out.println(从键盘输入不超过40个字符,按回车键结束输入:);intcount=System.in.read(buffer);/读取标准输入流System.out.println(保存在缓冲区的元素个数为+count);System.out.println(输出buffer元素值:);,for(inti=0;icount;i+)System.out.print(+bufferi);System.out.println();System.out.println(输出buffer字符元素:);System.out.write(buffer,0,buffer.length);,7.3.4数据流的应用,例7.7基于字符型的文件输入输出流与缓冲流的应用。该程序具有复制文件,在屏幕显示文件内容的功能。运行结果如图所示。,importjava.io.*;publicclassIO2publicstaticvoidmain(Stringargs)throwsIOExceptionFileReaderin=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();,7.4其它常用类,本节介绍Java语言的6个常用类,它们是数学函数类Math,提供了基本数学运算;日期类Date、Calendar和DateFormat,提供了日期和时间操作;随机数类Random,提供了随机数生成器;向量类Vector,提供了类似于可变长数组的操作。,7.4.1数学函数类Math,Math是一个最终类,含有基本数学运算函数,如指数运算、对数运算、求平方根和三角函数等,可以直接在程序中加Math前缀调用。下面是其成员变量和常用成员方法(举例说明):staticdoubleE/数学常量estaticdoublePI/圆周率staticdoublesin(doublea)/正弦函数staticdoublecos(doublea)/余弦函数staticdoubletan(doublea)/正切函数staticdoubleexp(doublea)/常数e的a次幂,7.4.2日期类,Java提供了3个日期类:Date、Calendar和DateFormat。在程序中,对日期的处理主要是如何获取、设置和格式化,Java的日期类提供了很多方法以满足程序员的各种需要。其中,Date主要用于创建日期对象并获取日期,Calendar可获取和设置日期,DateFormat主要用来创建日期格式化器。Java语言规定的基准日期为1970.1.100:00:00格林威治(GMT)标准时。,7.4.3随机数类Random,Random有两个构造方法:Random()、Random(longseed)。前者使用系统时间作为种子数,后者使用指定的种子数。构造方法只是创建了随机数生成器,必须调用生成器的方法才能产生随机数。Random具有nextBoolean、nextInt等方法。,例7.11生成各种类型的随机数,如图所示。,importjava.util.*;classRD1publicstaticvoidmain(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);,7.4.4向量类Vector,Vector被设计成一个能不断增长的序列,用来保存对象引用。在创建Vector对象时可以指定初始容量和增量,每次添加元素都将使向量长度按增量自动增长。Vector类似于可变长数组,但功能更加强大,任何类型的对象都可以放入Vector。通过调用Vector封装的方法,可以随时添加或删除向量元素,以及增加或缩短向量序列的长度。,例7.12Vector的各种用法,如图所示。,publicclassV0publicstaticvoidmain(S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能销售框架协议书
- 土地熟化投资协议书
- 招聘茶叶销售协议书
- 杉木转让协议书范本
- 门面餐饮入股协议书
- 知识竞赛冠名协议书
- 医院用血免责协议书
- 美容项目购买协议书
- 农村修路筹款协议书
- 题库保密协议书模板
- 莱芜市人民医院院区扩建工程项目可行性研究报告
- 2025初中物理课程标准(2022版)考试模拟试卷及答案
- 物理-华大新高考联盟2025届高三3月教学质量测评试题+答案
- 3.2 频率的稳定性(第2课时) 课件 2024-2025学年北师大版七年级数学下册
- 2025年贵州省遵义市中考一模英语试题(含笔试答案无听力原文及音频)
- 综合应急预案专项应急预案与现场处置方案
- 客服营销面试试题及答案
- 计划管理培训课件
- 口腔材料学-课程教学大纲
- 《骑鹅旅行记》名著阅读读课件
- 沪教版(五四学制)(2024)六年级下册单词表+默写单
评论
0/150
提交评论