《Java语言程序设计》考试练习题(带答案)_第1页
《Java语言程序设计》考试练习题(带答案)_第2页
《Java语言程序设计》考试练习题(带答案)_第3页
《Java语言程序设计》考试练习题(带答案)_第4页
《Java语言程序设计》考试练习题(带答案)_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

PAGE5《JAVA语言程序设计》期末考试试题及答案一、单选择题1、编译JavaApplication源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)。A.javaB..classC.htmlD..exe2、设x=1,y=2,z=3,则表达式y+=z--/++x的值是(A)。A.3B.3.5C.4D.53、不允许作为类及类成员的访问控制符的是(C)。A.publicB.privateC.staticD.protected4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(A)。A.staticvoidmethod()B.publicvoidmethod()C.finalvoidmethod()D.abstractvoidmethod()二、填空题1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码和解释运行字节码。2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用2字节内存空间,这样,无论是中文字符还是英文字符,都是占用2字节内存空间。3、设x=2,则表达式(x++)/3的值是0。4、若x=5,y=10,则x<y和x>=y的逻辑值分别为true和false。5、抽象(abstract)方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法是不能被当前类的子类重新定义的方法。6、创建一个名为MyPackage的包的语句是packageMyPackage;,该语句应该放在程序的位置为:应该在程序第一句。7、设有数组定义:intMyIntArray[]={10,20,30,40,50,60,70};则执行以下几个语句后的输出结果是120。ints=0;for(inti=0;i<MyIntArray.length;i++)if(i%2==1)s+=MyIntArray[i];System.out.println(s);8、在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系。三、写出下面程序的运行结果1、importjava.io.*;publicclassabc{publicstaticvoidmain(Stringargs[]){ABs=newAB("Hello!","IloveJAVA.");System.out.println(s.toString());}}classAB{Strings1;Strings2;publicAB(Stringstr1,Stringstr2){s1=str1;s2=str2;}publicStringtoString(){returns1+s2;}}运行结果:Hello!IloveJAVA.2、importjava.io.*;publicclassabc{publicstaticvoidmain(Stringargs[]){inti,s=0;inta[]={10,20,30,40,50,60,70,80,90};for(i=0;i<a.length;i++)if(a[i]%3==0)s+=a[i];System.out.println("s="+s);}}运行结果:s=1803、importjava.io.*;publicclassabc{publicstaticvoidmain(Stringargs[]){System.out.println("a="+a+"\nb="+b);}}classSubClassextendsSuperClass{intc;SubClass(intaa,intbb,intcc){super(aa,bb);c=cc;}}classSubSubClassextendsSubClass{inta;SubSubClass(intaa,intbb,intcc){super(aa,bb,cc);A=aa+bb+cc;}voidshow(){System.out.println("a="+a+"\nb="+b+"\nc="+c);}}运行结果:a=60 b=20 c=30《JAVA语言程序设计》期末考试试题及答案2(应考必备题库)一.判断题1.Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。(√)2.Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。(×)3.Java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象(人工可以指定的程序改变)。(×)4.构造函数用于创建类的实例对象,构造函数名应与类名相同,返回类型为void(无返回类型)。(×)5.在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。(√)6.拥有abstract方法的类是抽象类,但抽象类中可以没有abstract方法。(√)7.Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点。(×)8.静态初始化器是在其所属的类加载内存时由系统自动调用执行。(√)9.在Java中对象可以赋值,(类,new)只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。(×)二.单项选择题1.Javaapplication中的主类需包含main方法,以下哪项是main方法的正确形参?(B)A、Stringargs B、Stringargs[] C、Chararg D、StringBufferargs[]2.以下关于继承的叙述正确的是(A)。A、在Java中类只允许单一继承B、在Java中一个类只能实现一个接口C、在Java中一个类不能同时继承一个类和实现一个接口D、在Java中接口只允许单一继承3.paint()方法使用哪种类型的参数?(A)A、Graphics B、Graphics2D C、String D、Color4.以下哪个不是Java的原始数据类型(B)A、int B、Boolean C、float D、char5.以下哪项可能包含菜单条( B )。A、Panel B、Frame C、Applet D、Dialog6.若需要定义一个类域或类方法,应使用哪种修饰符?(A)A、static B、package C、private D、public7.在浏览器中执行applet程序,以下选项中的哪个方法将被最先执行(A)。A、init() B、start() C、destroy() D、stop()8.给出下面代码,关于该程序以下哪个说法是正确的?(C)publicclassPerson{staticintarr[]=newint[5];publicstaticvoidmain(Stringa[]){System.out.println(arr[0]);}}A、编译时将产生错误 B、编译时正确,运行时将产生错误C、输出零 D、输出空9.下列哪些语句关于Java内存回收的说明是正确的?(B)A、程序员必须创建一个线程来释放内存B、内存回收程序负责释放无用内存C、内存回收程序允许程序员直接释放内存D、内存回收程序可以在指定的时间释放内存对象10.以下哪个关键字可以用来对对象加互斥锁?(B)A、transient B、synchronized C、serialize D、static11.以下代码段执行后的输出结果为(A) intx=-3;inty=-10; System.out.println(y%x);A、 -1 B、2 C、1 D、312.有以下程序片段,下列哪个选项不能插入到行1。(D)1.2.publicclassInteresting{3.//dosth4.}A、importjava.awt.*; B、packagemypackage; C、classOtherClass{} D、publicclassMyClass{}13.设有下面两个赋值语句:a=Integer.parseInt(“12”);b=Integer.valueOf(“12”).intValue();下述说法正确的是(D)。A、a是整数类型变量,b是整数类对象。B、a是整数类对象,b是整数类型变量。C、a和b都是整数类对象并且值相等。 D、a和b都是整数类型变量并且值相等。14.FilterOutputStream是BufferedOutputStream、DataOutputStream及PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数类型?AA、OutputStream B、File C、InputStream D、BufferedOutputStream15.在编写JavaApplet程序时,需在程序的开头写上(B)语句。A、importjava.awt.*; B、importjava.applet.Applet;C、importjava.io.*; D、importjava.awt.Graphics;16.类Parent、Child定义如下:1. publicclassParent2.{publicfloataFun(floata,floatb)throws3.IOException{}4.}5.publicclassChildextendsParent{6.7.} 将以下哪种方法插入行6是不合法的。(A)A、floataFun(floata,floatb){}B、publicintaFun(inta,intb)throwsException{}C、publicfloataFun(floatp,floatq){}D、publicintaFun(inta,intb)throwsIOException{}17.在使用interface声明一个接口时,只可以使用(D)修饰符修饰该接口。A、private B、protected C、privateprotected D、public18、有以下方法的定义,请选择该方法的返回类型(D)。 ReturnTypemethod(bytex,doubley) { return(short)x/y*2; }A、byte B、short C、int D、double19、关于以下代码段的说法正确的是(D)1.Strings="abcde";2.StringBuffers1=newStringBuffer("abcde");3.if(s.equals(s1))4.s1=null;5.if(s1.equals(s))6.s=null;A、第1行编译错误,String的构造器必须明确调用B、第3行编译错误,因为s与s1有不同的类型C、编译成功,但执行时在第5行有异常抛出D、编译成功,过程中也没有异常抛出20、编译并运行以下程序,以下描述哪个选项是正确的(C)1.classX{2. protectiedStringtoString()i{3. returnsuper.toString();}4. }A、编译通过运行无异常 B、编译通过但运行时出错C、行2出错,不能成功编译 D、不能成功编译,行3出错三.程序阅读题1.以下程序的输出结果为相等。classStringTest1{ publicstaticvoidmain(String[]args) { Strings1="hello"; Strings2=newString("hello"); if(s1.equals(s2)){ System.out.println("相等"); }else{ System.out.println("不相等"); } }}2.以下程序段的输出结果为56789。publicclassTestArray{publicstaticvoidmain(Stringargs[]){ inti,j; inta[]={5,9,6,8,7}; for(i=0;i<a.length-1;i++){ intk=i; for(j=i;j<a.length;j++) if(a[j]<a[k])k=j; inttemp=a[i]; a[i]=a[k]; a[k]=temp; } for(i=0;i<a.length;i++) System.out.print(a[i]+"");System.out.println();}}3.写出以下程序的功能。importjava.io.*;publicclassTestFile{ publicstaticvoidmain(Stringargs[])throwsException{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));BufferedWriterbw=newBufferedWriter(newFileWriter(“input.txt"));Strings;while(true) {System.out.print("请输入一个字符串:");System.out.flush();s=br.readLine();if(s.length()==0)break;bw.write(s);bw.newLine();}bw.close();}}功能:从键盘逐一输入字符串,逐一输出至input.txt文件中,直至输入空行。4.阅读以下程序,写出输出结果。classAnimal{Animal(){System.out.print("Animal");}}publicclassDogextendsAnimal{Dog(){System.out.print("Dog");}publicstaticvoidmain(String[]args){Dogsnoppy=newDog();}}输出结果:AnimalDog《JAVA语言程序设计》期末考试试题及答案3(应考必备题库)一、单项选择题1、如下哪个是Java中的标识符(D)A、public B、super C、3number D、width2、如下哪个是Java中的标识符(A)A、fieldnameB、super C、3number D、#number3、已知如下定义:Strings="story";下面哪个语句不是合法的(C)A、s+="books"; B、s=s+100;C、intlen=s.length; D、Stringt=s+“abc”;4、如下哪个是Java中有效的关键字(C)A、name B、hello C、false D、good5、下面的代码段执行之后count的值是什么(D) intcount=1; for(inti=1;i<=5;i++){ count+=i; } System.out.println(count);A、5 B、1 C、15 D、166、定义一个类,必须使用的关键字是(B)A、public B、class C、interface D、static7、定义一个接口必须使用的关键字是(C)A、public B、class C、interface D、static8、如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是(C) A、p.add(b); B、p.add(b,"North"); C、p.add(b,"South"); D、b.add(p,"North");9、声明并创建一个按钮对象b,应该使用的语句是(A)A、Buttonb=newButton(); B、buttonb=newbutton();C、Buttonb=newb(); D、b.setLabel(“确定”);10、Frame对象默认的布局管理器是(B)A、FlowLayout B、BorderLayout C、CardLayout D、null11、下列哪一个import命令可以使我们在程序中创建输入/输出流对象(C)A、importjava.sql.*; B、importjava.util.*;C、importjava.io.*; D、import.*;12、下面哪一个import命令可以为我们提供编写网络应用程序的类(D)A、importjava.sql.*; B、importjava.util.*;C、importjava.io.*; D、import.*;13、如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象(A)A、FileInputStream B、FileOutputStreamC、DataOutputStream D、FileWriter二、填空题1、如果将类MyClass声明为public,它的文件名称必须是(MyClass.java)才能正常编译。2、Java程序中的单行注释符是(//),多行注释符是(/**/)。3、Java中布尔类型的常量有两种,它们是(true)和(false)。4、Java中用于定义小数的关键字有两个:(float)和(double),后者精度高于前者。5、Java中用于两个数相等比较的运算符是:(==),用于不相等比较的运算符是(<>)。6、在Java中定义一个字符串类型的变量str的语句是:(Stringstr;),定义一个具有10个元素的整型数组a的语句是:(int[]arr=newint[10];)。7、导入mypackage包中的所类的命令是(importmypackage.*;)。8、当声明一个数组intarr[]=newint[5];时,这代表这个数组所保存的变量类型是(int),数组名是(arr),数组的大小为(5),数组元素下标的使用范围是(0到4)。9、假设x=13,y=4,则表达式x%y!=0的值是(true),其数据类型是(boolean)。10、异常处理是由(try)、(catch)和finally块三个关键所组成的程序块。11、以下程序段的输出结果是(三角形) intx=5,y=6,z=4; if(x+y>z&&x+z>y&&z+y>x) System.out.println("三角形"); else System.out.println("不是三角形");12、下面程序段的执行结果是(65432) inta[]={2,3,4,5,6}; for(inti=a.length-1;i>=0;i--) System.out.print(a[i]+"");三、程序阅读题1、以下程序的输出结果为_Peteris17yearsold!___。publicclassPerson{ Stringname; intage; publicPerson(Stringname,intage){ =name; this.age=age; } publicstaticvoidmain(String[]args){ Personc=newPerson("Peter",17); System.out.println(+"is"+c.age+"yearsold!"); }}2、以下程序的输出结果为__课程号:101课程名:ASP学分:3___。publicclassCourse{ privateStringcNumber; privateStringcName; privateintcUnit; publicCourse(Stringnumber,Stringname,intunit){ cNumber=number; cName=name; cUnit=unit; } publicvoidprintCourseInfo(){ System.out.println("课程号:"+cNumber+"课程名:"+cName+"学分:"+cUnit); }}classCourseTest{ publicstaticvoidmain(String[]args){ Coursec; c=newCourse("101","ASP",3); c.printCourseInfo(); }}3、以下程序的输出结果为__汤姆猫体重:20.0斤___。publicclassTom{ privatefloatweight; privatestaticStringname; publicvoidsetWeight(floatweight){ this.weight=weight; } privatevoidout(){ System.out.println(name+"体重:"+weight+"斤"); } publicstaticvoidmain(String[]args){ T="汤姆猫"; Tomcat=newTom(); cat.setWeight(20); cat.out(); }}4、以下程序的输出结果_姓名:Tom年龄:15家庭住址:金水区电话:66123456学校:九中_。publicclassFather{ Stringname,address,tel; intage; publicFather(Stringname,intage){ =name; this.age=age; } voidout(){ System.out.print("姓名:"+name); System.out.print("年龄:"+age); } voidoutOther(){ System.out.print("家庭住址:"+address); System.out.print("电话:"+tel); }}classSonextendsFather{ Stringschool; publicSon(Stringname,intage){ super(name,age); } voidout(){ super.out(); super.outOther(); System.out.println("学校:"+school); } publicstaticvoidmain(Stringargs[]){ Sonson=newSon("Tom",15); son.address="金水区"; son.school="九中"; son.tel="66123456"; son.out(); }}5、下列程序的运行结果是__12345____。publicclassMyClass{ inta[]={1,2,3,4,5}; voidout(){ for(intj=0;j<a.length;j++) System.out.print(a[j]+""); } publicstaticvoidmain(String[]args){ MyClassmy=newMyClass(); my.out(); }}四、简答题1、简述Java中异常处理的机制?答:首先Java的异常是面向对象的。一个Java的Exception是一个描述异常情况的对象.当出现异常情况时,一个Exception对象就产生了,并放到异常的成员函数里。Java的异常处理是通过5个关键词来实现的:try,catch,throw,throws和finally。1.异常处理:在Java语言的错误处理结构由try,catch,finally三个块组成。其中try块存放将可能发生异常的Java语言,并管理相关的异常指针;catch块紧跟在try块后面,用来激发被捕获的异常;finally块包含清除程序没有释放的资源,句柄等。不管try块中的代码如何退出,都将执行finally块。2.抛出异常:Java语言可以不在方法中直接捕获,而用throw语句将异常抛给上层的调用者。Throw语句就是来明确地抛出一个异常;首先你必需得到一个Throwable的实例句柄,通过参数传到catch中,或者采用new操作符来创建一个。2、什么是继承?答:通过必要的说明能够实现某个类无需重新定义就拥有另一个类的某些属性和方法,并把这种关系称为继承,先定义的类称为父类,后定义的类称为子类,并且允许多层的继承关系。3、请简述重载和重写的区别?答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。五、程序设计题1、按以下要求编写程序(1)创建一个Rectangle类,添加width和height两个成员变量(2)在Rectangle中添加两种方法分别计算矩形的周长和面积(3)编程利用Rectangle输出一个矩形的周长和面积解答:publicclassRectangle{ floatwidth,height; publicRectangle(floatwidth,floatheight){ this.width=width; this.height=height; } publicfloatgetLength(){ return(this.width+this.height)*2; } publicfloatgetArea(){ returnthis.width*this.height; } publicstaticvoidmain(String[]args){ Rectanglerect=newRectangle(10,20); System.out.println("周长是:"+rect.getLength()); System.out.println("面积是:"+rect.getArea()); }}2、按以下要求编写程序(1)编写Animal接口,接口中声明run()方法(2)定义Bird类和Fish类实现Animal接口(3)编写Bird类和Fish类的测试程序,并调用其中的run()方法解答:publicinterfaceAnimal{ voidrun();}classBirdimplementsAnimal{ publicvoidrun(){ System.out.println("鸟儿在飞..."); }}classFishimplementsAnimal{ publicvoidrun(){ System.out.println("鱼儿在游..."); }}publicclassTestAnimal{ publicstaticvoidmain(String[]args){ Birdbird=newBird(); bird.run(); Fishfish=newFish(); fish.run(); }}3、编写一个Frame框架应用程序,要求如下:(1)在窗口设置两个菜单“文件”、“编辑”(2)在“文件”菜单里添加三个菜单项“打开”、“保存”、“关闭”(3)在“编辑”菜单里添加两个菜单项“复制”、“粘贴”(4)点击关闭菜单项时,使程序关闭。解答:importjava.awt.Color;importjava.awt.Frame;importjava.awt.Menu;importjava.awt.MenuBar;importjava.awt.MenuItem;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;/**主窗体*/publicclassMyFrameextendsFrame{ privatestaticfinallongserialVersionUID=6895463895656626294L; privateFramefrmMain; //窗体 MenuBarmb; //菜单栏 MenumnuFile; //"文件"菜单 MenumnuEdit; //"编辑"菜单 MenuItemmiOpen; //"打开"菜单项 MenuItemmiSave; //"保存"菜单项 MenuItemmiClose; //"关闭"菜单项 MenuItemmiCopy; //"复制"菜单项 MenuItemmiPaste; //"粘贴"菜单项 publicMyFrame(){ frmMain=newFrame("主窗体"); //创建菜单栏 mb=newMenuBar(); //创建菜单 mnuFile=newMenu("文件"); mnuEdit=newMenu("编辑"); //创建菜单项 miOpen=newMenuItem("打开"); miSave=newMenuItem("保存"); miClose=newMenuItem("关闭"); miCopy=newMenuItem("复制"); miPaste=newMenuItem("粘贴"); } publicvoidshowFrame(){ frmMain.setSize(800,600); frmMain.setLocation(100,100); frmMain.setBackground(Color.white); frmMain.setVisible(true); frmMain.setLayout(null); frmMain.addWindowListener(newWindowHandler());//注册窗口监听器 //将菜单栏放入窗体中 frmMain.setMenuBar(mb); //将菜单放入菜单栏中 mb.add(mnuFile); mb.add(mnuEdit); //将菜单项放入菜单中 mnuFile.add(miOpen); mnuFile.add(miSave); mnuFile.add(miClose); mnuEdit.add(miCopy); mnuEdit.add(miPaste); //注册动作事件监听器 miClose.setActionCommand("miClose_Clicked"); miClose.addActionListener(newMenuHandler()); } //定义一个内部类,在这个类中编写窗口关闭事件处理程序。 privateclassWindowHandlerextendsWindowAdapter{ publicvoidwindowClosing(WindowEvente){ System.exit(0);//退出应用程序,状态码0表示正常终止,非0表示异常终止。 } } //定义一个内部类,在这个类中编写动作事件处理程序。 privateclassMenuHandlerimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand()=="miClose_Clicked"){ System.exit(0);//退出应用程序 } } }}publicclassTestMyFrame{ publicstaticvoidmain(String[]args){ //启动主窗体 MyFrameguiWindow=newMyFrame(); guiWindow.showFrame(); }}Java语言程序设计试题及答案第四章数组和字符串4.1举例说明如何声明、创建和初始化数组。答:声明数组:inta[]或int[]a创建数组:a=newint[]初始化inta[]={1,2,3,4,5}4.2举例说明如何声明、创建和初始化数组。答:声明多维数组:inta[][]或int[]a[]或int[][]a创建数组:a=newint[][]初始化inta[][]={{1,2,3,4,5}{6,7,8,9,10}}4.3一个数组能够存储不同类型的元素吗?答:不能。因为数组是将一组相同类型的数据顺序存储,组成一种复合数据类型。 特例:如果将数组声明为Object类型,因为所有数据类型都直接或间接继承自Object父类,所以该数组可存储所有类型的元素。 Object[]objects=newObject[3]; inti=1; Stringstring="abc"; booleanb=true; objects[0]=i; objects[1]=string; objects[2]=b;4.4编写一个Java程序,形成以下形式的二维数组,并输出。12910254381124567122316151413221718192021解一:publicstaticvoidmain(Stringargs[]){ intintArray[][]={{1,2,9,10,25}, {4,3,8,11,24}, {5,6,7,12,23}, {16,15,14,13,22}, {17,18,19,20,21}}; for(inti=0;i<=4;i++){ for(intj=0;j<=4;j++){ if(intArray[i][j]/10==0) System.out.print(""+intArray[i][j]+""); else System.out.print(intArray[i][j]+""); } System.out.println(""); } }解二:publicstaticvoidmain(String[]args){ introw=5;//这里控制输出的行列请保证行列相等 int[][]a=newint[row][row]; a[0][0]=1; intn=2,zero=0,change=1; intvalue=2; for(inti=1;i<row;i++){ for(intj=0;j<(2*n-1);j++){ if(i%2!=0){ if(j<(2*n-2)/2){ a[zero++][change]=value++; continue; } if(j==(2*n-2)/2){ a[j][j]=value++; } if(j>(2*n-2)/2){ a[change][--zero]=value++; } }else{ if(j<(2*n-2)/2){ a[change][zero++]=value++; continue; } if(j==(2*n-2)/2){ a[j][j]=value++; } if(j>(2*n-2)/2){ a[--zero][change]=value++; } } } n++; change++; zero=0; } Stringout=""; for(inti=0;i<row;i++){ for(intj=0;j<row;j++){ out=""+a[i][j]; if(out.length()==1) out=""+out; System.out.print(out+""); } System.out.println(); } }4.5java中的字符数组与字符串有什么区别?答:字符数组是由类型为char的字符元素组成的,每个元素位置存储一个字符元素,对于数组名为s的数组,用chars[]表示。字符串是由0个或多个字符组成的序列,是一个对象,对于对象名为s用Strings表示。4.6确定一个字符数组长度与确定一个String对象的长度有什么不同?答:确定一个字符数组的长度用数组名.length,而确定一个String对象的长度用对象名.length()4.7用toUpperCase()和toLowerCase()方法实现大小写转换答:publicclassUpperAndLowerTest{publicstaticvoidmain(Stringargs[]){Strings1=("ABCdefgHIJkhl123"),s2,s3;System.out.println("未转换时的字符串s1="+s1);bytet1[]=s1.getBytes();//将字符串s1转换成字节数组t1s2=s1.toUpperCase();//将字符串s1的字母全部转换成大写并保存到s2s3=s1.toLowerCase();//将字符串s1的字母全部转换成小写并保存到s3bytet2[]=s2.getBytes();//将字符串s2转换成字节数组t2bytet3[]=s3.getBytes();//将字符串s1转换成字节数组t3for(inti=0;i<t1.length;i++){if(t1[i]!=t2[i])//如果t1[i]不是大写字母而是小写字母t1[i]=t2[i];//将小写字母转换成大写字母else//如果是大写字母t1[i]=t3[i];//将大写字母转换成小写字母}s1=newString(t1);//将字节数组t1转化成字符串保存到s1中System.out.println("进行字母大小写转换后的s1="+s1);}}4.8编写一个程序通过连接两个字符串得到一个新字符串并输出。答:publicclassConcatTest{publicstaticvoidmain(Stringargs[]){Stringstr1="abcd";Stringstr2="efgh";Stringstr3=str1.concat(str2);System.out.println("str3="+str3);}}4.9声明MyDate类,功能:增加1天,增减1月和增加1年的方法;输出MyDate对象日期的方法;求两个MyDate对象日期差的方法。并提供能用当前日期初始化MyDate类对象的构造方法。程序运行结果:源文件:MyDate.javaimportjava.util.Calendar;/***日历类*@author段智敏*/publicclassMyDate{ publicstaticlongYEAR_MSEL=1000*60*60*24*365L; publicstaticlongMONTH_MSEL=1000*60*60*24*30L; publicstaticlongDATE_MSEL=1000*60*60*24L; publicstaticlongHOUR_MSEL=1000*60*60L; publicstaticlongMINUTE_MSEL=1000*60L; privateintyear; privateintmonth; privateintdate; privateinthour; privateintminute; privateintsecond; privateCalendarcalendar; /** *构造方法使用当前时间日期初始化对象 */ publicMyDate() { calendar=Calendar.getInstance(); year=calendar.get(Calendar.YEAR); month=calendar.get(Calendar.MONTH)+1; date=calendar.get(Calendar.DAY_OF_MONTH); hour=calendar.get(Calendar.HOUR_OF_DAY); minute=calendar.get(Calendar.MINUTE); second=calendar.get(Calendar.SECOND); } /** *构造方法使用指定年、月、日初始化对象 */ publicMyDate(intyear,intmonth,intdate) { set(year,month,date); } /** *构造方法使用指定年、月、日、时、分、秒初始化对象 */ publicMyDate(intyear,intmonth,intdate,inthourOfDay,intminute,intsecond) { set(year,month,date,hourOfDay,minute,second); } /** *设置日历字段year、month和date的值。 *@paramyear-用来设置YEAR日历字段的值。 *@parammonth-用来设置month日历字段的值。 *@paramdate-用来设置date日历字段的值。 */ publicvoidset(intyear,intmonth,intdate) { set(year,month,date,0,0,0); } /** *设置日历字段year、month和date的值。 *@paramyear-用来设置YEAR日历字段的值。 *@parammonth-用来设置month日历字段的值。 *@paramdate-用来设置date日历字段的值。 *@paramhourOfDay-用来设置hour日历字段的值。 *@paramminute-用来设置minute日历字段的值。 *@paramsecond-用来设置second日历字段的值。 */ publicvoidset(intyear,intmonth,intdate,inthourOfDay,intminute,intsecond) { calendar=Calendar.getInstance(); calendar.set(year,month-1,date,hourOfDay,minute,second); this.year=calendar.get(Calendar.YEAR); this.month=calendar.get(Calendar.MONTH)+1; this.date=calendar.get(Calendar.DAY_OF_MONTH); this.hour=calendar.get(Calendar.HOUR_OF_DAY); this.minute=calendar.get(Calendar.MINUTE); this.second=calendar.get(Calendar.SECOND); } /** *增加一天 */ publicvoidaddOneDay() { date++; calendar.set(year,month,date); } /** *增减一月 */ publicvoidaddOneMonth() { month++; calendar.set(year,month,date); } /** *增加一年 */ publicvoidaddOneYear() { year++; calendar.set(year,month,date); } /** *返回此时间值,以毫秒为单位。 *@return-当前时间,以从历元至现在所经过的UTC毫秒数形式。 */ publiclonggetTimeInMillis() { returncalendar.getTimeInMillis(); } /** *两个日期相差的时间 *@parammd-另一个日期对象 *@return-相差的时间 */ publicStringapart(MyDatemd) { longmsel=this.getTimeInMillis()-md.getTimeInMillis(); msel=Math.abs(msel); booleanboo=msel>0?true:false; longyear=msel/MyDate.YEAR_MSEL; longdate=msel%MyDate.YEAR_MSEL/MyDate.DATE_MSEL; longhour=msel%MyDate.DATE_MSEL/MyDate.HOUR_MSEL; longminute=msel%MyDate.HOUR_MSEL/MyDate.MINUTE_MSEL; longsecond=msel%MyDate.MINUTE_MSEL/1000; Stringresult=""; if(boo) result="已过去"; else result="还有"; result+=(year+"年"+date+"天"+hour+"小时"+minute+"分钟"+second+"秒"); returnresult; } /** *返回此日历的字符串表示形式。 *@return-此日历的字符串表示形式。 */ publicStringtoString() { returnyear+"年"+month+"月"+date+"日,"+hour+":"+minute+":"+second; }}测试类源文件:TestMyDate.java/***MyDate的测试类*@author段智敏*/publicclassTestMyDate{ publicstaticvoidmain(String[]args) { MyDatemd1=newMyDate(); MyDatemd2=newMyDate(2014,1,30); System.out.println("当前时间:"+md1.toString()); System.out.println("2014年除夕:"+md2.toString()); md2.addOneDay(); System.out.println("增加一天后,大年初一:"+md2.toString()); }}4.10求前n个质数。要求确定m是否是质数,用早先求出的质数对m的整除性来确定。/***求前n个质数。<BR>*确定m是否是质数,用早先求出的质数对m的整除性来确定。<BR>*@author段智敏*/publicclassWork4_10{ /**用来存质数的数组*/ privateintarrayInt[]; publicWork4_10(intn) { arrayInt=newint[n]; arrayInt[0]=2; intindex=1;//保存数组的有效长度 booleanboo=true; for(inti=2;i<arrayInt.length;i++) { boo=true; for(intj=0;j<index;j++) { if(i%arrayInt[j]==0)//用已存入数组中的质数判断 boo=false; } if(boo)//如果是true则是指数,存入数组,数组有效长度加1. { arrayInt[index]=i; index++; } } } /** *打印数组元素 */ publicStringprintArray() { Stringresult=""; for(inti=0;i<arrayInt.length;i++) { if(arrayInt[i]!=0) result+=arrayInt[i]+""; } returnresult; } publicstaticvoidmain(String[]args) { Work4_10w=newWork4_10(100); System.out.println(w.printArray()); }}4.11编写实现从两个字符串中找出最长的相同字符列的代码。程序运行结果:/***找出两个字符串中,最长的相同字符列*@author段智敏*/publicclassWork4_11{ publicstaticvoidmain(String[]args) { Stringstr1="0000abcdef0000"; Stringstr2="123ab4567cdef789abcdef"; Stringstr3=getLongSameString(str1,str2); System.out.println("str1="+str1); System.out.println("str2="+str2); System.out.println("最长的相同字符串为:"+str3); } publicstaticStringgetLongSameString(Stringstr1,Stringstr2) { Stringtemp=""; Stringsame=""; StringlongSame=""; for(inti=0;i<str1.length();i++) { for(intj=i+1;j<=str1.length();j++) { temp=str1.substring(i,j); if(str2.indexOf(temp)>0) { same=temp; if(longSame.length()<same.length()) { longSame=temp; } } } } returnlongSame; }}4.12整理字符串,将字符串的前导空白符和后随空白符删去,并将字符串中非空白字符之间的连接的多个空白符只保留一个,而去掉多余的空白符。程序运行结果:publicclassWork4_12{ publicstaticvoidmain(Stringargs[]){ Stringstr="ILoveYou"; str=str.trim(); StringTokenizers=newStringTokenizer(str); StringnewStr=""; while(s.hasMoreTokens()){ newStr=newStr+""+s.nextToken(); } System.out.println("旧字符串:"+str); System.out.println("处理后新字符串:"+newStr); }}4.13编写用数组实现大整数的类,提供大整数的加、减、乘等运算。程序运行结果:大整数类源文件:MyBigInteger.java/***大整数类*@author段智敏*/publicclassMyBigInteger{ /**能存储的最大位数*/ publicstaticfinalintMAXLENGTH=100; /**正负号标识*/ privateintsignum=1; /**实际存储用的数组*/ privateintdataArray[]; /** *将参数的十进制字符串表示形式转换为BigInteger。 *@paramval-要转换的十进制字符串表示形式。 */ publicMyBigInteger(Stringval) { this.setData(val); } /** *声明一个MAXLENGTH位的,空的大整数类 */ publicMyBigInteger() { dataArray=newint[MyBigInteger.MAXLENGTH]; } /** *根据十进制字符串表示形式转换为MyBigInteger的数据 *@paramstr-十进制字符串表示形式。 */ publicvoidsetData(Stringstr) { dataArray=newint[MyBigInteger.MAXLENGTH]; try { intend=0; signum=1; if(str.charAt(0)=='-') { signum=-1; end=1; } intindex=0; for(inti=str.length()-1;i>=end;i--) { dataArray[index++]=Integer.parseInt(String.valueOf(str.charAt(i))); } } catch(NumberFormatExceptione) { e.printStackTrace(); } } /** *加法,返回其值为(this+val)的BigInteger。 *@paramval-将添加到此BigInteger中的值。 *@return-this+val */ publicMyBigIntegeradd(MyBigIntegerval) { MyBigIntegerresult=newMyBigInteger(); if(this.signum>0&&val.signum<0)//正+负:转化成(正-正)的减法,进行计算 { returnthis.subtract(val.abs()); } elseif(this.signum<0&&val.signum>0)//负+正:转换成(负-负)的减法,进行计算 { MyBigIntegertemp=val.abs(); temp.signum=-1; returnthis.subtract(temp); } elseif(this.signum>0&&val.signum>0)//正+正:直接相加,结果为正 result.signum=1; elseif(this.signum<0&&val.signum<0)//负+负:直接相加,结果为负 result.signum=-1; intmaxlength=Math.max(this.length(),val.length()); for(inti=0;i<maxlength;i++) { result.dataArray[i]+=this.dataArray[i]+val.dataArray[i]; result.carryBit(i); } returnresult; } /** *减法,返回其值为(this-val)的BigInteger。 *@paramval-从此BigInteger中减去的值。 *@return-this-val */ publicMyBigIntegersubtract(MyBigIntegerval) { MyBigIntegerresult=newMyBigInteger(); //正-负:转化成(正+正)的加法,进行计算 if(this.signum>0&&val.signum<0) { result=this.add(val.abs()); } //负-正:转换成(负+负)的加法,进行计算 elseif(this.signum<0&&val.signum>0) { MyBigIntegertemp=val.abs();//注意这里,如果直接改变val,会会改观引用原先的对象的属性 temp.signum=-1; result=this.add(temp); } //负-负:转换成正-正,调换位置 elseif(this.signum<0

温馨提示

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

评论

0/150

提交评论