- 114.50 KB
- 2022-07-29 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
JAVA复习一、1、程序设计语言发展阶段2、Java的三个方向:JavaSE、JavaEE、JavaME1)标准版:JavaStandardEdition,简称JavaSE主要用于台式机上,提高了系统性能2)企业版:JavaEnterpriseEdition,简称JavaEE主要用于服务器上运行的Java应用,包括EnterpriseJavaBeans(EJB)和JavaServerPages(JSP)两个部件3)微型版:JavaMicroEdition,简称JavaME主要用于移动电话、机顶盒、智能卡等小型移动智能装置、嵌入式系统3、Java语言的特点:(Java白皮书提出了11个)1)简单:C++纯净版,简化的C++体积小:基础解释器和类:40KB基本标准库和线程:175KB2)面向对象:优于C++3)分布式:有一套功能强大的处理TCP/IP协议的例程库,网络处理能力强大易用,Servlet使服务器端的Java编程高效,远程方法调用机制能够进行分布式对象间的通信4)健壮性:错误检查使编程可靠,采取安全的指针模型5)安全性:应用于Internet和分布式环境,将安全性列为第一优先考虑可构建防病毒和防攻击的系统,是当前最安全的编程语言6)中立体系结构:Java编译器产生同特定计算机体系结构无关的字节码指令,可在任何机器上解释执行,并能在运行时很容易地转换成本机代码7)可移植性:与具体实现无关,数据类型大小固定系统库定义了可移植性接口,包括一个抽象Windows类,有各种OS实现8)解释型:可在任何有Java解释器的机器上运行Java字节码9)高性能:及时编译JIT(just-in-time)10)多线程:可带来更好的交互响应和实时行为多线程编程的简化是Java作为服务器端开发语言流行的原因之一11)动态:能适应发展的环境,库中可增加新方法和变量而客户端无需做任何改变4、Java语言与JavaScript语言的区别虽然JavaScript与Java有紧密的联系,但却是两个公司开发的不同的两个产品。Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发;而JavaScript是Netscape公司的产品,其目的是为了扩展NetscapeNavigator浏览器的功能,而开发的一种可以嵌入Web页面中的基于对象和事件驱动的解释性语言,它的前身是LiveScript;而Java的前身是Oak语言。下面对两种语言间的异同作如下比较:\n1)基于对象和面向对象 Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(ObjectBased)和事件驱动(EventDriver)的编程语言。因而它本身提供了非常丰富的内部对象供设计人员使用。2)解释和编译 两种语言在其浏览器中所执行的方式不一样。Java的源代码在传递到客户端执行之前,必须经过编译,因而客户端上必须具有相应平台上的仿真器或解释器,它可以通过编译器或解释器实现独立于某个特定的平台编译代码的束缚。 JavaScript是一种解释性编程语言,其源代码在发往客户端执行之前不需经过编译,而是将文本格式的字符代码发送给客户编由浏览器解释执行。3)强变量和弱变量 两种语言所采取的变量是不一样的。 Java采用强类型变量检查,即所有变量在编译之前必须作声明。如: Intx; Stringy; x=1234; x=4321; 其中X=1234说明是一个整数,Y=4321说明是一个字符串。 JavaScript中变量声明,采用其弱类型。即变量在使用前不需作声明,而是解释器在运行时检查其数据类型,如: x=1234; y="4321"; 前者说明x为其数值型变量,而后者说明y为字符型变量。4)代码格式不一样 Java是一种与HTML无关的格式,必须通过像HTML中引用外媒体那么进行装载,其代码以字节代码的形式保存在独立的文档中。 JavaScript的代码是一种文本字符格式,可以直接嵌入HTML文档中,并且可动态装载。编写HTML文档就像编辑文本文件一样方便。5)嵌入方式不一样 在HTML文档中,两种编程语言的标识不同,JavaScript使用来标识,而Java使用来标识。6)静态联编和动态联编 Java采用静态联编,即Java的对象引用必须在编译时的进行,以使编译器能够实现强类型检查。JavaScript采用动态联编,即JavaScript的对象引用在运行时进行检查,如不经编译则就无法实现对象引用的检查。5、SDK的编译程序、解释程序\n二、1、运算符的优先级别(P39-40)2、表达式计算三、1、结构化程序设计的三种基本结构:顺序结构、选择结构、循环结果四、1、面向对象程序设计的核心技术1)封装(encapsulation)有时也叫做数据隐藏利用抽象数据类型将数据和基于数据的操作结合在一起黑盒子数据被保护在抽象数据类型的内部,通过接口与外界联系作用:保证数据完整性和安全性可重用性高、降低复杂性、提高效率和质量2)继承(inheritance)派生类(derivedclass)是父类和子类之间共享数据和方法的机制;是软件重用的一种方式具有传递性;包括单一继承(single~)和多重继承(multiple~)。作用:使程序结构清晰、提高程序的抽象程度、更接近人类的思维方式降低编码和维护的工作量3)多态(polymorphism)也称为同名异式不同的对象收到同一个消息可产生完全不同的响应,这一现象叫做多态。多态的效果:用户发送一个通用的消息,而实现的细节则由接收对象自行决定。一个程序中同名的不同方法共存的情况覆盖(override):子类的方法与从父类继承的方法同名P110重载(overload):同一类中定义同名方法的情况P111作用:大大提高程序的抽象程度和简洁性、有助于隐藏对象内部的细节、最大限度降低类和程序模块之间的耦合性4)覆盖和重载的区别2、构造方法的特点:1)名字和类名一样2)没有返回值类型3)在创建对象时由系统自动调用4)用来对对象进行初始化3、修饰符抽象类、最终类五、1、JavaApplication程序与JavaApplet程序的区别<1>JavaApplication程序的主要特点:(1)独立完整的程序\n(2)在命令行调用独立的解释器软件即可运行(3)主类必须有一个定义为main的方法,是程序执行的入口点<2>JavaApplet程序的主要特点:(1)在浏览器中运行,不是完整独立的程序(2)嵌在HTML文件中,解释器嵌在浏览器中(3)不需要有main方法,但主类必须是java.applet.Applet的子类(4)可以直接利用浏览器或AppletViewer提供的GUI(5)更多地体现状态和状态之间的切换,而不是固定的顺序化的执行过程<3>区别:(1)运行方式不同。JavaApplet程序不能单独运行,它必须依附于一个用HTML语言编写的网页并嵌入其中,通过与Java兼容的浏览器来控制执行。JavaApplication是完整的程序,可以独立运行,只要有支持Java的虚拟机,它就可以独立运行而不需要其他文件的支持。(2)运行工具不同。运行JavaApplet程序的解释器不是独立的软件,而是嵌在浏览器中作为浏览器软件的一部分。JavaApplication程序被编译以后,用普通的Java解释器就可以使其边解释边执行,而JavaApplet必须通过网络浏览器或者Applet观察器才能执行。(3)程序结构不同。每个JavaApplication程序必定含有一个并且只有一个main方法,程序执行时,首先寻找main方法,并以此为入口点开始运行。含有main方法的那个类,常被称为主类,也就是说,JavaApplication程序都含有一个主类。而Applet程序则没有含main方法的主类,这也正是Applet程序不能独立运行的原因。尽管Applet没有含main方法的主类,但Applet一定有一个从java.applet.Applet派生的类,它是由Java系统提供的。(4)JavaApplet程序可以直接利用浏览器或AppletViewer提供的图形用户界面,而JavaApplication程序则必须另外书写专用代码来营建自己的图形界面。(5)受到的限制不同JavaApplication程序可以设计成能进行各种操作的程序,包括读/写文件的操作,但是JavaApplet对站点的磁盘文件既不能进行读操作,也不能进行写操作。然而,由于Applet的引入,使Web页面具有动态多媒体效果和可交互性能,这使由名为超文本、实为纯文本的HTML语言编写成的Web页面真正具有了超文本功能,不但可以显示文本信息,而且还可以有各种图片效果和动态图形效果,从而使页面显得生动美丽;另外,Applet使Web页面增加了按钮等功能,从而增加了交互性。JavaApplet和JavaApplication在执行方面的主要区别表现在:JavaApplication一般是在本地机上运行,而JavaApplet一般放在服务器上,它是根据本地机的请求被下载到本地机,然后才在本地机上运行。2、Applet程序的生命周期(P128)3、事件处理机制(P133)六、1、异常2、异常处理机制(P208)七、多线程1、线程2、线程、进程、多任务3、线程的状态(P222)\n第二章2:已知圆球体积公式为V=4/3πr3编写程序,设计一个求圆球体积的方法,并在主程序调用它,求出当r=3时,圆球的体积值。classSphere{publicstaticvoidmain(Stringargs[]){intr=3;doublev;v=3.14*r*r*r*4/3;System.out.println("V="+v)}}第三章8:编写程序:利用数列来取得的近似值。并计算在得到3.14159之前,这个数列要取到第几项?publicclassAlmost{publicstaticvoidmain(Stringargs[]){intn;longm;doubles,t;n=1;m=0;s=0;do{t=(double)n/(2*m+1);m++;n=-n;s=s+t;}while(4*s-3.14159>0.0000001||4*s-3.14159<-0.0000001);System.out.println(m);}}\n第四章2:声明一个矩形类Rectangle,其中有多个构造方法。用不同的构造方法创建对象,并输出矩形的周长和面积。publicclassRectangle{doublewid,leng,gir,area;publicRectangle(){};publicvoidsetWidth(doublewd){wid=wd;}publicRectangle(doublewd,doublele){wid=wd;leng=le;}publicvoidsetLength(doublele){leng=le;}publicdoublegetLength(){returnleng;}publicdoublegetWidth(){returnwid;}publicdoublegirth(){return2*(wid+leng);}publicdoublearea(){returnwid*leng;}publicvoidprintRectangle(){System.out.println("Width="+wid+",Length="+leng);}publicstaticvoidmain(Stringargs[]){\nRectanglere1=newRectangle(10,20);Rectanglere2=newRectangle();re2.setWidth(3);re2.setLength(4);re1.printRectangle();System.out.println("Girth="+re1.girth()+",Area="+re1.area());re2.printRectangle();System.out.println("Girth="+re2.girth()+",Area="+re2.area());}}3:声明一个矩阵类Matrix,有这样一些实例方法:将一个矩阵转置、求两个矩阵的和。publicclassMatrix{privateintmx[][],m,n;publicMatrix(intp,intq){m=p;n=q;mx=newint[m][n];iniMatrix();}publicMatrix(){m=3;n=3;mx=newint[3][3];iniMatrix();}publicvoidiniMatrix(){inti,j;for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mx[i][j]=(int)(Math.random()*100);}publicvoidtranMatrix(){inti,j,x;intmt[][]=newint[m][n];\nfor(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mt[i][j]=mx[i][j];x=m;m=n;n=x;mx=newint[m][n];for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mx[i][j]=mt[j][i];}publicvoidprintMatrix(){inti,j;for(i=0;i<=m-1;i++){for(j=0;j<=n-1;j++)System.out.print(""+mx[i][j]);System.out.println();}}publicvoidaddMatrix(Matrixb){inti,j;for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)mx[i][j]=mx[i][j]+b.mx[i][j];}publicstaticvoidmain(Stringargs[]){Matrixma=newMatrix(4,3);Matrixmb=newMatrix(4,3);System.out.println("Thematrix_A:");ma.printMatrix();System.out.println("Thematrix_B:");mb.printMatrix();System.out.println("Matrix_A+Matrix_B:");ma.addMatrix(mb);ma.printMatrix();System.out.println("TransposeMatrix_B:");mb.tranMatrix();mb.printMatrix();}}\n第五章图形界面1求和工具。编写一个程序:设计如下面图示的界面。在该界面中,可以在第一个文本框中输入第一个加数,可以在第二个文本框中输入第二个加数,当用鼠标的左键单击按钮"="时,在第三个文本框中显示出前面两个加数之和。importjavax.swing.SwingUtilities;importjavax.swing.JPanel;importjavax.swing.JFrame;importjavax.swing.JTextField;importjava.awt.Rectangle;importjavax.swing.JLabel;importjavax.swing.SwingConstants;importjavax.swing.JButton;publicclassGetSumextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJTextFieldfirst=null;privateJLabelplus=null;privateJTextFieldsecond=null;privateJButtongetBt=null;privateJTextFieldsum=null;privateJButtonclearBt=null;privateJTextFieldgetFirst(){if(first==null){first=newJTextField();first.setText("0");first.setBounds(newRectangle(5,19,80,22));}returnfirst;}privateJTextFieldgetSecond(){if(second==null){\nsecond=newJTextField();second.setText("0");second.setBounds(newRectangle(106,19,80,22));}returnsecond;}privateJButtongetGetBt(){if(getBt==null){getBt=newJButton("=");getBt.setBounds(newRectangle(185,19,44,22));getBt.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){intfirstNum=Integer.parseInt(first.getText().trim());intsecondNum=Integer.parseInt(second.getText().trim());intsumNum=firstNum+secondNum;sum.setText(""+sumNum);}});}returngetBt;}privateJTextFieldgetSum(){if(sum==null){sum=newJTextField();sum.setEditable(false);sum.setBounds(newRectangle(229,19,102,22));}returnsum;}privateJButtongetClearBt(){if(clearBt==null){clearBt=newJButton();clearBt.setBounds(newRectangle(138,58,64,18));clearBt.setText("清空");clearBt.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){first.setText("0");second.setText("0");sum.setText("");}});\n}returnclearBt;}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){GetSumthisClass=newGetSum();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}publicGetSum(){super();initialize();this.setResizable(false);}privatevoidinitialize(){this.setBounds(100,300,354,118);this.setContentPane(getJContentPane());this.setTitle("求和");}privateJPanelgetJContentPane(){if(jContentPane==null){plus=newJLabel();plus.setBounds(newRectangle(84,21,23,18));plus.setHorizontalAlignment(SwingConstants.CENTER);plus.setText("+");jContentPane=newJPanel();jContentPane.setLayout(null);jContentPane.add(getFirst(),null);jContentPane.add(plus,null);jContentPane.add(getSecond(),null);jContentPane.add(getGetBt(),null);jContentPane.add(getSum(),null);jContentPane.add(getClearBt(),null);}returnjContentPane;}\n}2:设计一个简单的计算器,能进行两个数的加、减、乘、除。界面如图所示。“clear”按钮用于清理文本域的内容。importjava.awt.*;importjava.awt.event.*;importjava.applet.*;publicclassCalculatorextendsApplet{TextFieldone=newTextField(5);TextFieldtwo=newTextField(5);TextFieldresult=newTextField(10);Labella1=newLabel("firstdata:");Labella2=newLabel("seconddata:");Labella3=newLabel("equal:");Buttonplus=newButton("+");Buttonminus=newButton("-");Buttontimes=newButton("*");Buttondivided=newButton("/");Buttonclear=newButton("clear");Panelp1=newPanel(newFlowLayout());Panelp2=newPanel(newFlowLayout());Panelp3=newPanel(newFlowLayout());publicvoidinit(){this.setLayout(newBorderLayout());p1.add(la1);p1.add(one);p1.add(la2);p1.add(two);this.add(p1,"North");p2.add(la3);p2.add(result);this.add(p2,"Center");\np3.add(plus);p3.add(minus);p3.add(times);p3.add(divided);p3.add(clear);this.add(p3,"South");plus.addActionListener(newplusL());minus.addActionListener(newminusL());times.addActionListener(newtimesL());divided.addActionListener(newdividedL());clear.addActionListener(newclearL());}classplusLimplementsActionListener{publicvoidactionPerformed(ActionEvente){inti;Integerj=newInteger(one.getText());Integerk=newInteger(two.getText());i=j.intValue()+k.intValue();result.setText(j.toString(i));}}classminusLimplementsActionListener{publicvoidactionPerformed(ActionEvente){inti;Integerj=newInteger(one.getText());Integerk=newInteger(two.getText());if(j.intValue()>=k.intValue()){i=j.intValue()-k.intValue();result.setText(j.toString(i));}else{i=k.intValue()-j.intValue();result.setText("-"+j.toString(i));}}}classtimesLimplementsActionListener{publicvoidactionPerformed(ActionEvente){inti;Integerj=newInteger(one.getText());Integerk=newInteger(two.getText());i=j.intValue()*k.intValue();result.setText(j.toString(i));}\n}classdividedLimplementsActionListener{publicvoidactionPerformed(ActionEvente){inti;Integerj=newInteger(one.getText());Integerk=newInteger(two.getText());try{i=j.intValue()/k.intValue();result.setText(j.toString(i));}catch(ArithmeticExceptionee){result.setText("dividedbyzero");}}}classclearLimplementsActionListener{publicvoidactionPerformed(ActionEvente){one.setText(null);two.setText(null);result.setText(null);}}}