1、JAVA程序设计练习题一、单选择题1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A.java B. .class C.html D. .exe2、设 x = 1 , y = 2 ,z = 3,则表达式 yz/x 的值是( A )。 A. 3 B. 3.5 C. 4 D. 53、不允许作为类及类成员的访问控制符的是( C )。 A. public B. private C. static D. protected4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式
2、为( A )。 A. static void method( ) B. public void method() C. final void method( ) D. abstract void method( )5、关于选择结构下列哪个说法正确?( B )Aif语句和 else语句必须成对出现Bif语句可以没有else语句对应Cswitch结构中每个case语句中必须用break语句Dswitch结构中必须有default语句6、while循环和 dowhile循环的区别是:( D )A没有区别,这两个结构任何情况下效果一样Bwhile循环比 dowhile循环执行效率高Cwhile循环是先
3、循环后判断,所以循环体至少被执行一次Ddowhile循环是先循环后判断,所以循环体至少被执行一次7、关于 for循环和 while循环的说法哪个正确?( B )Awhile循环先判断后执行,for循环先执行后判断。Bwhile循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果C两种循环任何时候都不可以替换D两种循环结构中都必须有循环体,循环体不能为空8、下列修饰符中与访问控制无关的是( D )Aprivate BpublicCprotected Dfinal9、 void的含义:( A )A方法没有返回值 B 方法体为空C没有意义 D.定义方法时必须使用10、 return语句:
4、( C )A只能让方法返回数值 B方法都必须含有C方法中可以有多句return D不能用来返回对象11、关于对象成员占用内存的说法哪个正确?( B )A同一个类的对象共用同一段内存B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间C对象的方法不占用内存D以上都不对12、下列说法哪个正确?( C )A不需要定义类,就能创建对象B对象中必须有属性和方法C属性可以是简单变量,也可以是一个对象D、属性必须是简单变量13、下列说法哪个正确?( A )A、一个程序可以包含多个源文件B、一个源文件中只能有一个类C、一个源文件中可以有多个公共类D、一个源文件只能供一个程序使用14、关于方法mai
5、n()的说法哪个正确?( C )A方法main()只能放在公共类中Bmain()的头定义可以根据情况任意更改C一个类中可以没有main()方法D所有对象的创建都必须放在main()方法中15、构造函数何时被调用?( A )A、创建对象时 B、类定义时C、使用对象的方法时 D、使用对象的属性时16、抽象方法:( C )A、可以有方法体B、可以出现在非抽象类中C、是没有方法体的方法D、抽象类中的方法都是抽象方法17、关于继承的说法正确的是:( B )A、子类将继承父类所有的属性和方法。B、子类将继承父类的非私有属性和方法。C、子类只继承父类public方法和属性D、子类只继承父类的方法,而不继承属
6、性18、关于构造函数的说法哪个正确?( C )A、一个类只能有一个构造函数B、一个类可以有多个不同名的构造函数C、构造函数与类同名D、构造函数必须自己定义,不能使用父类的构造函数C19、 this和super:( C )A、都可以用在main()方法中B、都是指一个内存地址C、不能用在main()方法中D、意义相同20、关于super的说法正确的是:( C )A、是指当前对象的内存地址B、是指当前对象的父类对象的内存地址C、是指当前对象的父类D、可以用在main()方法中21、覆盖与重载的关系是( A )A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中B覆盖方法可以不同名,而重载方
7、法必须同名Cfinal修饰的方法可以被覆盖,但不能被重载D覆盖与重载是同一回事22、关于接口哪个正确?( A )A、实现一个接口必须实现接口的所有方法B一个类只能实现一个接口C接口间不能有继承关系D接口和抽象类是同一回事23、异常包含下列哪些内容?( A )A程序执行过程中遇到的事先没有预料到的情况B程序中的语法错误C程序的编译错误D以上都是24、对于已经被定义过可能抛出异常的语句,在编程时:( A )A、必须使用trycatch语句处理异常,或用throws将其抛出B如果程序错误,必须使用 trycatch语句处理异常C可以置之不理D只能使用trycatch语句处理25、当某一线程正处于休眠
8、状态,而另一个线程用 Thread 类中的interrupt() 方法中断它时,抛出的异常类型是( C )。A) IOException B) RuntimeExceptionC)InterruptedException D) ClassNotFoundException26、下面的程序段的功能是( D )。File file1=new File(d:xxxyyyzzz);file1.mkdirs();A)在当前目录下生成子目录:xxxyyyzzz B)生成目录:e:xxxyyyzzzC)在当前目录下生成文件xxx.yyy.zzz D)以上说法都不对 27、应用程序的main方法中有以下语句,
9、则输出的结果是 ( B )。 String s = xxxxxxxxxxxxxxx#123#456#zzzzz; int n = s.indexOf(#); int k = s.indexOf(#, n+1); String s2 = s.substring(n+1, k); System.out.println(s2); A) 123456 B) 123C) xxxxxxxxxxxxxxx D) zzzzz28、关于下面的程序Test.java说法正确的是( D )。public class Test Stringx=1; int y; publicstatic void main(Stri
10、ng args) intz=2; System.out.println(x+y+z); A)3 B)102 C) 12 D)程序有编译错误 29、应用程序的main方法中有以下语句,则输出的结果是( A )。 intb=1, 1, 1, 2,2, 3;int sum=0;for(int i=0; ib.length; i+) for(int j=0; jbi.length; j+) sum+=bij; System.out.println(sum=+sum);A) 10B)6 C) 9 D) 1330、应用程序的main方法中有以下语句,则执行后输出的结果是( B )。int x = 125,
11、21,5,168,98;int min = x0;for (int i=1; ix.length; i+) if(xi min) min = xi;System.out.println(min);A) 125B) 5 C) 98 D) 168 31、应用程序的main方法中有以下语句,则输出的结果是( D )。Hashtable hashtable=new Hashtable();hashtable.put(100,aaa);hashtable.put(200,bbb);hashtable.put(300,ccc); System.out.println(hashtable.get(300).
12、toString() +hashtable.get(200).toString()+ hashtable.get(100).toString(); A)aaa B) bbb C) cccD) cccbbbaaa32、以下关于java异常说法不正确的是( D )。A) Throwable 类是 Java 语言中Error类和Exception类的父类。B)当异常对象是Exception类(或其子类)的实例时,能通过 Java 虚拟机或者 throw语句抛出该异常对象,并能通过trycatchfinally处理。C)如果只用一个catch块捕捉多个异常对象,则catch 子句中的参数类型应是所有异
13、常对象的父类。D)以上说法都不对。33、下列程序段执行后的结果是( A )。String s = new String(abcdefg);for (int i=0; is.length(); i+=2)System.out.print(s.charAt(i); A) acegB) ACEG C) abcdefg D) abcd 34、有整型数组:int x=12,35,8,7,2;,则调用方法Arrays.sort(x)后,数组x中的元素值依次是( A )。A) 27 8 1235 B) 1235 8 72 C) 3512 8 72 D) 87 12 35 235、应用程序的main方法中有以
14、下语句,则输出的结果是( A )。 Strings1=new String(abc);String s2=new String(abc);boolean b1=s1.equals(s2);boolean b2=(s1=s2); System.out.print(b1+b2); A)truefalse B) falsetrue C) true trueD)false false 36、应用程序的main方法中有以下语句,则输出的结果是 ( B )。 Hashtable hashtable=new Hashtable();hashtable.put(x,12345);hashtable.put(y
15、,67890);hashtable.put(a,abcde); System.out.println(hashtable.get(a); A)a B) abcde C) 12345D) 67890 37、应用程序的main方法中有以下语句,则输出的结果是( B )。 Strings=12345#aaa#bbb#67890; int n=s.indexOf(#); intk=s.indexOf(#,n+1); intm=s.indexOf(#,k+1); Strings2=s.substring(m+1); System.out.println(s2); A) 123456 B) 67890 C
16、) aaaD) bbb38、下面程序段执行后b的值是( B )。 Integerinteg =new Integer(9); boolean b = integ instanceof Object; A) 9B) true C) 1 D) false39、应用程序Test.java的源程序如下,在命令行键入: javaTest aaabb c回车后输出的结果是( A )。public class Test publicstatic void main(String args) int k1=args.length; int k2=args1.length(); System.out.print
17、(k1+k2); A) 32 B)1 2C) 1 3 D) 3340、应用程序的main方法中有以下语句,则输出的结果是 (A )。 intb=1, 2,2, 2,2,2;int sum=0;for(int i=0;ib.length;i+) for(int j=0;jbi.length;j+) sum*=bij; System.out.println(sum=+sum);A) 32B)11 C) 2 D) 3 41、应用程序的main方法中有以下语句,则执行后输出的结果是( D )。intx=125,21,5,168,98;int max=x0;for(int i=1;imax) max =
18、xi;System.out.println(max);A) 125B) 5 C) 98D) 16842、程序Test.java编译运行后输出的结果是( A )。public class Test Strings1=java; publicstatic void main(String args) intz=2; Testt=new Test(); System.out.println(t.s1+z); A) java2B)2 C)没有输出结果D)java43、应用程序的main方法中有以下语句,则输出的结果是 ( A )。 String s1=0.5, s2=12;double x=Doubl
19、e.parseDouble(s1);int y=Integer.parseInt(s2); System.out.println(x+y);A) 12.5 B) 120.5 C) 12 D) “12.5”44、如下哪个是Java中的标识符( A ) A、public B、super C、3number D、width45、如下哪个是Java中的标识符( A )A、fieldnameB、super C、3number D、#number46、已知如下定义:String s = story; 下面哪个语句不是合法的( A )A、s += books; B、s = s + 100;C、int len
20、 = s.length; D、String t = s + “abc”;47、如下哪个是Java中有效的关键字( C )A、name B、hello C、false D、good48、下面的代码段执行之后count的值是什么( D ) int count = 1; for (int i = 1; i = 5; i+) count += i; System.out.println(count);A、5 B、1 C、15 D、1649、定义一个类,必须使用的关键字是( B )A、public B、class C、interface D、static50、定义一个接口必须使用的关键字是( C )A、
21、public B、class C、interface D、static51、如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是( C ) A、p.add(b); B、p.add(b,North); C、p.add(b,South); D、b.add(p,North);52、声明并创建一个按钮对象b,应该使用的语句是( A )A、Button b=new Button(); B、button b=new button();C、Button b=new b(); D、b.setLabel(“确定”);53、Frame对象默认的布局管理器是( B )A、F
22、lowLayout B、BorderLayout C、CardLayout D、null二、填空题1、开发与运行Java程序需要经过的三个主要步骤为 编辑源程序 、 编译生成字节码 和 解释运行字节码 。2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用 2字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2字节内存空间。3、设 x = 2 ,则表达式 ( x + + )3 的值是 1。4、若x = 5,y = 10,则x = y的逻辑值分别为 true和 false 。5、 抽象 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法
23、必须在抽象类之中定义。 final 方法是不能被当前类的子类重新定义的方法。6、创建一个名为 MyPackage 的包的语句是 package mypackage ,该语句应该放在程序的位置为: 应放在程序第一句 。7、设有数组定义:int MyIntArray = 10 , 20 , 30 , 40 , 50 ,60 , 70; 则执行以下几个语句后的输出结果是 120 。 int s = 0 ; for (int i = 0 ; i MyIntArray.length ;i + + ) if ( i % 2 = = 1 ) s += MyIntArrayi ; System.out.pri
24、ntln(s);8、在Java程序中,通过类的定义只能实现 单 重继承,但通过接口的定义可以实现 多 重继承关系。1、如果将类MyClass声明为public,它的文件名称必须是 MyClass.java 才能正常编译。2、Java程序中的单行注释符是 /,多行注释符是 /*.*/ 。3、Java中布尔类型的常量有两种,它们是 true 和 false。4、Java中用于定义小数的关键字有两个: float和 double ,后者精度高于前者。5、Java中用于两个数相等比较的运算符是: =,用于不相等比较的运算符是 。6、在Java中定义一个字符串类型的变量str的语句是: String s
25、tr,定义一个具有10个元素的整型数组a的语句是: int r=new int 10 。7、导入mypackage包中的所类的命令是 impoartmypackage.*;。8、当声明一个数组int arr = new int5; 时,这代表这个数组所保存的变量类型是 int,数组名是 arr ,数组的大小为 5 ,数组元素下标的使用范围是 0到4 。9、假设x=13,y=4,则表达式x%y != 0的值是 true,其数据类型是 boolean 。10、异常处理是由 try 、 catch和 finally 块三个关键所组成的程序块。11、以下程序段的输出结果是 三角形 int x = 5,
26、 y = 6, z = 4; if(x + y z & x + z y & z + y x) System.out.println(三角形); else System.out.println(不是三角形);12、下面程序段的执行结果是 6 5 4 3 2 int a = 2, 3, 4, 5, 6 ; for(int i = a.length - 1; i = 0; i-) System.out.print(ai + );三、简答题1、简述Java中异常处理的机制?答:首先Java的异常是面向对象的。一个Java的Exception是一个描述异常情况的对象.当出现异常情况时,一个Excepti
27、on对象就产生了,并放到异常的成员函数里。Java的异常处理是通过5个关键词来实现的:try,catch,throw,throws和finally。1.异常处理:在Java语言的错误处理结构由try,catch,finally三个块组成。其中try块存放将可能发生异常的Java语言,并管理相关的异常指针;catch块紧跟在try块后面,用来激发被捕获的异常;finally块包含清除程序没有释放的资源,句柄等。不管try块中的代码如何退出,都将执行 finally块。2.抛出异常:Java语言可以不在方法中直接捕获,而用throw语句将异常抛给上层的调用者。Throw语句就是来明确地抛出一个异常
28、;首先你必需得到一个Throwable的实例句柄,通过参数传到catch中,或者采用new操作符来创建一个。2、什么是继承?答:通过必要的说明能够实现某个类无需重新定义就拥有另一个类的某些属性和方法,并把这种关系称为继承,先定义的类称为父类,后定义的类称为子类,并且允许多层的继承关系。3、请简述重载和重写的区别?答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overri
29、ding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。四、写出下面程序的运行结果1、 import java.io.*;public class abc public static void main(String args ) AB s = new AB(Hello!,Ilove JAVA.);System.out.println(s.toString( ); class AB
30、String s1; Strings2;public AB(String str1, String str2) s1 = str1;s2 = str2; public String toString( ) return s1+s2;运行结果: Hello!I love JAVA 2、 import java.io.* ;public class abc public static void main(String args ) int i, s = 0 ; int a = 10 , 20 , 30 , 40 ,50 , 60 , 70 , 80 , 90 ; for ( i = 0 ; i a
31、.length ; i +) if ( ai%3 = = 0 ) s += ai ; System.out.println(s=+s);运行结果: S=180 3、import java.io.* ;public class abc public static void main(String args ) System.out.println(a=+a+nb=+b); class SubClass extends SuperClass int c;SubClass(int aa, int bb, int cc) super(aa, bb);c=cc; class SubSubClass ex
32、tends SubClass int a;SubSubClass(int aa, int bb, int cc) super(aa, bb, cc);A = aa+bb+cc;void show() System.out.println(a=+a+nb=+b+nc=+c); 运行结果:a=60 b=20 c=30 4、以下程序的输出结果为_Peter is17years old!_。public class Person Stringname; intage; publicPerson(String name, int age) this.name = name; this.age = age; publicstatic void main(String args) Person c = new Person(Peter,17); System.out.println(c.name + is + c.age + years old!); 5、以下程序的输出结果为_课程号:101 课程名:ASP 学分:3_。public class Course privateString cNumber; p