讲义教程分析_第1页
讲义教程分析_第2页
讲义教程分析_第3页
讲义教程分析_第4页
讲义教程分析_第5页
免费预览已结束,剩余77页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9章工具类与算语言基础类ObjectObject类是类库中所有类的父类。有如下方法protectedObjectclone()生成当前对象的一个拷贝,并返回这个对象publicbooleanequals(Objectobj) 同,是则返回truepublicfinalClassgetClass()获取当前对象所属的类信息,Class对象protectedvoidfinalize() publicStringtoString() 数据类型数据类型类与基本数据类型密切相关。下面介绍Interger类构造函数publicInteger(itnvalue)publics)可以分别利用一个基本数据类型int的量和一个字符串对象来生成一个Integer对象数据类型转换方法分别将当前对象所对应的int量转换成publicdoubledoubleValue()publicintintValue()publiclong字符串与int量相互转化的方publicStringpublicstaticintparseInt(Strings)publicstaticIntegervalueOf(Strings)MathMath类的方法都是static的。publicfinalstaticdoubleE;数学常量epublicfinalstaticdoblePI;圆周率常publicstaticdoubleabs(doublea); publcistaticdoubleacos(doublea); publicstaticdoubleexp(doublea); //e的参数次幂publicstaticdoublefloor(doublea) publicstaticdoubleIEEEremainder(doublef1,double//求publicstaticdoublelog(double //自然对publicstaticdoublemax(doublea,doubleb); publicstaticfloatmain(floatafloatb) //最小值publicstaticdoublepow(doublea,doubleb) publicstaticdoublerandom() //01(不含)之间的publicstaticdoublerint(doublea) publicstaticdoublesqrt(doublea) SystemSystem类的属性有三个标准输入标准输出和标准错误输PublicstaticPrintStreamerr;PublicstaticImputStreamin;PublicstaticPrintStream数(1) 创建数组空数组名=new类型[个数]intMy[]=newint[10];D200[]My=new如果是基本元素,则可省new并可同时给出初值intMy[]=初始要注意的问题有数组元素的下标从0开始,至数组元素个数减1为所有数组元素有一个属性length,表示数组元素的Java系统能自动检查是否有数组下标越界的情classpublicclassArraySize//Mainpublicstaticvoidmain(String[]args){Weeble[]a; Weeble[]b=newWeeble[5]; Weeble[]c=newWeeble[4];for(inti=0;i<c.length;i++) c[i]=newWeeble(); a=newWeeble[]{newWeeble(),new 并动态初始System.out.println("a.length="+a.length);System.out.println("b.length="+b.length);for(inti=0;i<b.length;i++)System.out.println("b["+i+"]"+b[i]);System.out.println("c.length="+c.length);System.out.println("d.length="+d.length);a=d;System.out.println("a.length="+int[]int[]f=newint[5];int[]g=newfor(inti=0;i<g.length;i++)g[i]=i*i;int[]h=//System.out.println("e.length="+e.length);System.out.println("f.length="+f.length);for(inti=0;i<f.length;i++)System.out.println("f["+i+"]="+f[i]);System.out.println("g.length="+g.length);System.out.println("h.length="+h.length);e=h;System.out.println("e.length="+e.length);e=newint[]{1,2};System.out.println("e.length="+e.length);}}向需要将不同类的对象组合成一个数据序需要做频繁的对象序列中元素的插入和删经常需要定位序列中的对象或其他查找操在不同的类之间传递大量的数它的局限性是对象不能是简单类型创建向量类的对象:publicVector(intinitCapacity,intinitCapacity表示刚创建时Vector序列包含的元素数capacityIncrement表示如果Vector序列中加元素,向向量序列中加元addElement(Object ement(Objectobj,int修改和删 ementAt(Objectobj,intindex)removeElement(Objectobj)removeElementAt(intindex)查elementAt(intindex)contains(ObjectlastIndexOf(Objectobj,inta=a=字符字符串常量:StringString建一个无名的String类型对象。创建字符串常量String对String(Stringvalue)String(StringBufferbuffer)String(charvalue[])字符串常的操startsWith(Stringprefix)endsWith(Stringsuffix)字符串中单个字符的查indexOf(intindexOf(intch,int字符串中子串的查indexOf(Stringstr)indexOf(Stringstr,intfromIndex)lastIndexOf(Stringstr)lastIndexOf(Stringstr,int比较两个字符compareTo(StringanotherString)equals(ObjectanObject)equalsIgnoreCase(StringanotherString)连接字符子concat(StringStringBuffer创建字符串变publicpublicStringBuffer(intlength)publicStringBuffer(Stringstr);publicStringBufferappend(Object)publicStringBufferinsert(int,Object)publicvoidsetCharAt(int,char)字符串的赋值和加=+递递归的基本思想是自己调用自己参见如下的数列程 程序源代 说importjava.applet.Applet;importjava.awt.*;import {

Labelprompt=newLabel("ImportLength(LessthanTextFieldinput=newString[msg=new //创建长度50的字符串数组msg t=0; t=publicvoid{for(inti=0;i<50;i++)msg[i]="";}publicvoidpaint(Graphicsg{for(inti=0;i< t+ t+1;i++)g.drawString(msg[i],10,40+15*i);}publicvoidactionPerformed(ActionEvent{if(e.getSource(){t=t={}}}longFibonacci(int{longt t+ t]=Blanks( t)+"Fibonacci("+n+"):";{t t-1)+"Return"+n;returnn;}{归计

temp=Fibonacci(n-1)+Fibonacci(n- t t-1)+"Return"+temp;return}}StringBlanks(intstepIn,int{Stringblank=for(inti=0;i<(stepIn-stepBack);i++)blank=blank+"";return}}了解以下各种排序和查找方法的基本思想冒泡排选择排插入排桶排顺序查对分查链class{privateintm_Data;privateNodem_Next;Node(int{m_Data=data;m_Next=null;}Node(intdata,Node{m_Data=data;m_Next=}voidsetData(int{m_Data=}int{return}voidsetNext(Node{m_Next=}Node{return}}class{Node{m_FirstNode=}LinkList(int{m_FirstNode=new}String{Nodenext=m_FirstNode;Strings="";while(next!={s=s+next.getData()+";";next=next.getNext();}return}voidinsertAtBegin(int{if(m_FirstNode==null)m_FirstNode=newNode(data);m_FirstNode=new}voidinsertAfterId(intdata,int{Nodenext=m_FirstNode;if(next==null)m_FirstNode=newNode(data);{while(next.getNext()!=null&&next.getData()!=id)next.setNext(newNode(data,}}booleanremoveAtId(int{Nodeahead=m_FirstNode;Nodefollow=ahead;returnelse{m_FirstNode=m_FirstNode.getNext();returntrue;}{ahead=ahead.getNext();{{returntrue;}follow=ahead=}return}}void{m_FirstNode=}}publicclassUseLinkList//Mainpublicstaticvoidmain(String[]{LinkListlist=newLinkList(-1);for(inti=0;i<10;i++){}System.out.println("Notexist");}}输出10过异常处理错异常与异常异常(Exception)和异常类是面向对象规范的一部分异常类结构与组所有Java异常类都是系统类库中的Exception类的子java.lang包中的类Throwable类派生了两个子类:Exception(应用程序用)和Error(系统保留Exception的构造函数有PublicPublicException(Strings提供错误描常用方法有publicString //返回错误描publicvoidprintStackTrace(); 系统定义的运行异Exception有许多子类,每个子类代表一种特定的运行时错用户自定义的异创建用户自定义异常时,一般需要完成如下的工作一个新的异常类,父类为ExceptionclassEmptyQueueExceptionextendspublicStringtoString()classEmptyQueueExceptionextends{QueuePublicEmptyQueueException(Queue{super(“EmptyQueue”);sourceQueue=q;}publicString{}}10-1classSimpleExceptionextendsException{}publicclassSimpleExceptionDemo{publicvoidf()throws thrownew}//Mainpublicstaticvoidmain(String[]args){ try{}catch(SimpleExceptione){}}}10-classMyExceptionextendsException{publicMyException(){}publicMyException(Stringmsg){}}publicclassFullConstructorspublicstaticvoidf()throwsMyException{System.out.println("ThrowingMyExceptionfromf()");thrownewMyException();}publicstaticvoidg()throwsMyException{System.out.println("ThowingMyExceptionformg()");thrownewMyException("Originatedin}//Mainpublicstaticvoidmain(String[]args){try{}catch(MyExceptione){}try}

catch(MyExceptione){}}}输出atuntitled1.MyException:Originateding()atuntitled1.FullConstructors.g(FullConstructors.java:20)atuntitled1.FullConstructors.main(FullConstructors.java:31)ThrowingMyExceptionfromf()ThowingMyExceptionform10-classMyException2extendsException{publicMyException2(){}publicMyException2(Stringmsg){}publicMyException2(Stringmsg,intx){i=}publicintval(){returni;}privateinti;}publicclassExtraFeaturespublicstaticvoidf()throwsMyException2{System.out.println("ThrowingMyException2fromf()");thrownewMyException2();}publicstaticvoidg()throwsMyException2{System.out.println("ThowingMyException2formg()");thrownewMyException2("Originateding()");}publicstaticvoidh()throwsMyException2{System.out.println("ThowingMyException2formh()");thrownewMyException2("Originatedinh()",47);}//Mainpublicstaticvoidmain(String[]args){try{}catch(MyException2e){}try}

catch(MyException2e){}try}catch(MyException2e){System.err.println("e.val()="+e.val());}}}输出atatuntitled1.ExtraFeatures.main(ExtraFeatures.java:36)untitled1.MyException2:Originateding()atatuntitled1.ExtraFeatures.main(ExtraFeatures.java:42)untitled1.MyException2:Originatedinh()atatuntitled1.ExtraFeatures.main(ExtraFeatures.java:48)e.val()=47ThrowingMyException2fromf()ThowingMyException2formg()ThowingMyException2formh()抛出异Java程序在运行时如果了一个可识别的错误就会系统自动抛出的异所有系统定义的运行异常都可以由系统自动抛出。如语句抛出的异用户自定义的异常必须错助于throw语句来定义抛出intdequeue()throws{intifthrow(newEmptyQueueException(this));}必须注意以下两个情况throw语句放if分支中,即满足一定条件时抛出异含有throw语句的方法,应该在方法头中增加throws异常类名列异常的处捕捉异While{System.out.print(queue.dequeue()+“ //里可能会抛出异 }}catch(EmptyQueueException{}多异常的处catchtry后面,每个catch块都有一个异常类捕捉所有异publicclassExceptionMethods//Mainpublicstaticvoidmain(String[]args){try{thrownewException("Here'smy}catch(Exceptione){ System.err.println("e.toString():"+e);}new}}输出CaughtExceptione.getMessage():Here'smyExceptione.getLocalizedMessage():Here'smye.toString():java.lang.Exception:Here'smyExceptionjava.lang.Exception:Here'smyException重新抛出异publicclassRethrowingpublicstaticvoidf()throwsException{System.out.println("fromf()");thrownewException("ThowingExceptionform}publicstaticvoidg()throwsThrowable{}catch(Exception //如果这两句修改则输出为输出//throw}}//Mainpublicstaticvoidmain(String[]args)throwsThrowable{try{}catch(Exceptione) }}}输出g(),java.lang.Exception:ThowingExceptionformf()atuntitled1.Rethrowing.f(Rethrowing.java:9)atuntitled1.Rethrowing.g(Rethrowing.java:14)atCaughtinmain,e.printStackTrace()java.lang.Exception:ThowingExceptionformf()atuntitled1.Rethrowing.f(Rethrowing.java:9)atuntitled1.Rethrowing.g(Rethrowing.java:14)atuntitled1.Rethrowing.main(Rethrowing.java:26)fromf()Insideg(),e.printStackTrace()java.lang.Exception:Thowingformf()atuntitled1.Rethrowing.f(Rethrowing.java:9)atuntitled1.Rethrowing.g(Rethrowing.java:14)atuntitled1.Rethrowing.main(Rethrowing.java:26)Caughtinmain,e.printStackTrace()java.lang.Exception:Thowingformf()atatuntitled1.Rethrowing.main(Rethrowing.java:26)Originatingtheexceptioninf()因为fillInStackTrace()的缘故,改变了异常的classOneExceptionextendspublicOneException(Strings)}classTwoExceptionextendsException{publicTwoException(Strings){super(s);}}publicclassRethrowNewpublicstaticvoidf()throwsOneException{System.out.println("Originatingtheexceptioninf()");thrownewOneException("thrownfromf()");}//Main try}catch(OneExceptione) thrownewTwoException("from}}}输出Caughtinmain,e.printStackTrace()untitled1.OneException:thrownfromf()atuntitled1.TwoException:frommain()atuntitled1.RethrowNew.main(RethrowNew.java:28)Exceptioninthread"main"Originatingtheexceptioninf()最后一个只抛出,没有截取的,回收器负责清Java标准异Throwable有两类:Error和Exception.Error无需捕捉,代表编译期错误和系统错误Exception代表可能从(1)Java标准程序库内,(2)用户函数执行期发生的意外事RuntimeException可以一路传递直至finally进行清无论是否抛出异常,finally子句都会被执行classThreeExceptionextendsException{}publicclassFinallyWorks{staticintcount=//Mainpublicstaticvoidmain(String[]args){while(true){tryif(count++==0) thrownewThreeException();System.out.println("Noexception");}catch(ThreeExceptione){}System.err.println("Infinallyclause");if(count==2)break;}}}}InfinallyclauseInfinallyclauseNoexception不管有没有异常,finally是一定要做异常遗classVeryImportantExceptionextendsException{publicStringtoString(){return"Averyimportant}}classHoHumExceptionextendsException{publicStringtoString(){return"Atrivial}}publicclassLostMessagevoidf()throwsthrownew}voiddispose()throwsHoHumException{thrownewHoHumException();}//Mainpublicstaticvoidmain(String[]args)throwsException{LostMessagelm=newLostMessage();}}}输出Atrivialatuntitled1.LostMessage.dispose(LostMessage.java:22)atuntitled1.LostMessage.main(LostMessage.java:30)Exceptioninthread没有出现VeryImportantException,第二个异常HoHumException在第一个异常处理之前抛11JavaI/O系Java输入输出类java的输入输出功能通过输入输出类库java.io包实现Java.io中有一个类(File)专门用于文件系统交互BooleancanRead();BooleancanWrite();Booleanexitsts();StringgetAbsolutePath();BooleanisFile();BooleanisDirectory();Booleanlength();BooleancreateNewFile();Booleandelete();VoiddeleteOnExit();//程序运行结束时删除该文Boolean流的概流式输入输出的特点是:数据的获取和发送是顺序的数据可以是二进制,字符,数字等输入输出流基本输入输出InputStream类是抽象类,具体对象是它的子类对象publicintread(以二进制方式读publicintread(byteb[]); publiclongskip(longn);//n个字节publicvoidmark(); publicvoidreset(); publicvoidclose(); OutputStream类是抽象类,具体对象是它的子类对主要方法有publicintwrite(intb);//将参b的低位字节写入publicintwrite(byteb[]); //将参数b中的全部字publicvoidflush(); publicvoid //关闭几种具体输入输出过滤 文件:FileInputStream,管道 FilterInputStream,和FilterOutputStream的子类: ReadByte(),readBoolean(),readShort(),…….WriteByte(),writeInt(),……标准输入输标准输System.in.read()要注意try中,可接收异读一个字节的数据,返回16位值,高80,且只能如键盘缓冲区没有值,则进程挂起ch= //从键盘缓冲区读入字节的数据}catch(IOExceptione)标准输System.out.println(“Pressanykeytofinishtheprogram”);charrest=}catch(IOException程序实例importjava.io.*;publicclassInAndOut{publicstaticvoidmain(String{BufferedReaderin s=in.readLine();}catch(IOExceptionSystem.out.println("Youareenteredstring:"+}}文件的处理与随Java程序的文件与管File类的对象表示一个磁盘文件或,其对象属性中包含了文件或的相关信息,如名称,长度,所含文可以是绝对,相对,静态属性System.dirSep作File类的对构造函数File(String 例如Filef1=newStrings=Filef2=newnewFile(Stringpath,String// 与名称分开的方例如Filef3=File(“myProgram\Java”,File(Filedir,String例如Stringsdir=“myProgram”+System.dirSep+”Java”;Stringsfile=“FileIO.data”;FileFdir=newFileFfile=new publicbooleanexists() publicbooleanisFIle() //publicbooleanisDirectory() publicStringgetName() publicStringgetPath()//publiclonglength()publicbooleancanRead()publicbooleancanWrite()publicString[]list();publicbooleanequals(File文件 操publicbooleanrenameTo(FilenewFile)publicvoiddelete()publicboolean程序实例importpublicclassFileOperation//Mainpublicstaticvoidmain(Stringargs[]{try Stringsdir="e:\\temp";Stringsfile;FileFdir1=newFile(sdir);if(Fdir1.exists()&&Fdir1.isDirectory()){System.out.println("Thereisadirectory"++"for(inti=0;i<Fdir1.list().length;i++)FileFdir2=newFile("e:\\temp\\temp"); createanewdir:");for(inti=0;i<Fdir2.list().length;i++)} sfile=FileFfile=newFile(Fdir1,sfile);{System.out.println("File"+Ffile.getName()+"inPath"+Ffile.getPath()+"is"+Ffile.length()+"in}}catch(Exceptione){}}}文件输入输出FileInputStream利用文件名字符串或File对象创建输入输出流对FileInputStream(StringFileInputStream(File利用已File对象创建从该对象对应的磁盘从文件输入输出流中读写数FileMyFile=new DataOutputStreamdout=newDataOutputStream(new程序实例importjava.io.*;publicclassMyFileIo{//Mainpublicstaticvoidmain(String[]args){charch;intFileMyPath=newFile("\\temp");FileMyFile1=newFile(MyPath,"crt.txt");try{ System.out.println("InputaStringfinishedwith#while((ch=(char)System.in.read())!='#')FileInputStreamfin=newFileInputStream(MyFile1);while((chi=fin.read())!=-1)}catch(FileNotFoundExceptione){}catch(IOExceptione){}}}程序对文件的随RandomAccessFile对象RandomAccessFile(StringnameStringmode);RandomAccessFile(Filef,Stringmode);FileBackMegFile=newFile(“BankFile.txt”); 对文件位置指针的操RandomAccessFile对象的文件位置指针位于文件每次读写操作后文件位置指针相应后移读写的字longgetPointer()方法可得到当前文件位置指针所在voidseek(longpos)可移动文件位置指针用longlength()可返回文件的字节长度读操实现DataInput接口,RandomAccessFile中的读方法 readFloat(),readDouble(),readLine(),readUTF().写操RandomAccessFile 程序实例importimportjava.awt.event.*;importjava.awt.*;publicclassTestFileDialogpublicstaticvoidmain(String[]args){newFileFrame();}}classFileFrameextendsFrameimplements{TextAreata;Buttonopen,quit;FileDialogfd;{super("Acquireanddisplaytext");ta=newTextArea(10,45);open=newButton("Open");quit=newButton("Close");setLayout(newFlowLayout());}publicvoidactionPerformed(ActionEvent{ { Filemyfile=newFile(fd.getDirectory(),fd.getFile()); {ta.append(raf.readLine()+}}catch(IOException{}} {}}}第12章网络编基于连接的流式套接套接字(Socket)是TCP/IP协议的编程接口,通过提供的一组APITCP/IP协议InetAddressInetAddress类对象中包含了IP地址,主机名等的IP地址。程序实例importpublicclassMyIPAddresspublicstaticvoidmain(String[]args){try{if(args.length{ }}catch(UnknownHostExceptione)}}}Socket是基于连接的通信,在通信开始之前由通信双方确认并建立一条的虚拟连接通道,通信结束后SocketServerSocket创建一个ServerSocket对象就创建了一个服务,创建了一个Socket对象就建立了一个ClientServer间的连ServerSocket类//提供服务的端为SocketLinkSocket=//Server等待直到捕捉到来自Client端的请并返回Socket对象LinkSocket,用于写数据。//Socket类 puterName”,8000);//欲连接的主机地址,提供服务的端 创建Socket对象,向Server 端口请Socket中读写Server端通信Client创建Socket对象,向Server 端口请Socket中读写Server端通信Client ServerSock对象在 Socket中读写数据Client端通信接收ClientSocket建立连接Client端的服务Server关闭Socket,关闭关闭ServerSocket对象结 实现流式Socket通信的ClientServer端编程序实例//Server端程importjava.io.*;importjava.awt.*;import.*;importpublicclassMySocketServerpublicstaticvoidmain(String[]{ }}classServiceThreadextendsFrameimplements{ServerServiceFatherListener;SocketConnectedClient;ThreadConnectThread;PanelListenerPanel;TextAreaServerMeg;publicServiceThread(ServerServicesv,Socket{FatherListener=sv;ConnectedClient=s;ConnectThread=newThread(this);setTitle("AnswerClient");setLayout(newBorderLayout());ServerMeg=newTextArea(10,50);add("Center",ServerMeg); ClientAddress.toString()+"\n");}publicvoid{DataInputStreamin=newDataInputStream(new

econnecttoourStrings=in.readLine();{ServerMeg.append("ClientInputInfo:\n"+s);s=in.readLine();}}catch(Exceptione){}FatherListener.addMeg("Client"+"closed."+"\n");}}classServerServiceextends{ServerSocketpublicServerService(intPort,int{try m_sListener=newServerSocket(Port,Count);m_sListener=newServerSocket(Port);setTitle("ServerListener");this.addWindowListener(newWinAdpt());setLayout(newBorderLayout());

add("Center",ListenerMeg);{SocketConnected=m_sListener.accept(); ListenerMeg.append("Client"+"connected"+"from\n"+ClientAddress.toString()+".\n");}}}}

ServiceThreadMyST=newcatch(IOException}publicvoidaddMeg(String{}}classWinAdptextends{publicvoidwindowClosing(WindowEvent{}//Client端程序importjava.io.*;importjava.awt.*;import.*;importclassMyClientextendsFrameimplements{SocketClientSocket;PrintStreamos;DataInputStreamis;Strings;LabelMylabel=newLabel(" e");TextAreatextArea;ButtonMyButton=newpublicstaticvoidmain(String{newpublic{setTitle("ClientWindow");setLayout(newBorderLayout());this.addWindowListener(newWinAdptClient(this));textArea=newTextArea(20,50);add("Center",textArea);}publicvoid{ClientSocket=new s=is.readLine();}catch(Exception}publicvoidactionPerformed(ActionEvent{{}catch(Exception}}}classWinAdptClientextends{MyClientm_Parent;WinAdptClient(MyClientp){m_Parent=}publicvoidwindowClosing(WindowEvent{try}catch(Exception}}无连接的数据数据Socket又称UDP套接字直接将信息打包传向指DatagramPacketDatagramSocketDatagramPacket类:用于数PublicDatagramPacket(byteibuf[],int InetAddressiaddr,intiport)(I,目的地的端口)DatagramSocket类:用于实现数据报的发送和接收过PublicPublicDatagramSocket(int UDP的编程实数据报的发送过程DatagramPacket对提供要发送的数据数据报分组长度发送目的机地址和目的端在指定的或可用的本机端口创建DatagramSocket对象DatagramSocket.send()数据报的接收过程DatagramPacket对象DatagramSocket对importjava.io.*;.*;publicclassUDPServerService//Mainpublicstaticvoidmain(String[]args){{System.out.println("Pleaseinputlocal}UDPServerThreadMyUDPServer=new}}classUDPServerThrea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论