JAVA程序设计试题
一、选择题(每题3分,共50题)
5.下列关于运行字节码文件的命令行参的描述中,正确的是(C)。
A.命令行的命令字被存放在args[0]中。
B.数组args[]的大小与命令行的参数的个数无关。
C.第一个命令行参数(紧跟命令字的参数)被存放在args[0]中。
D.第一个命令行参数被存放在args[1]中。
6.paint()方法使用哪种类型的参数? (A)
A.Graphics B.Graphics2D C.String D.Color
7.Java的核心包中,提供编程应用的基本类的包是(B)。
A.java.util B.https://www.wendangku.net/doc/4415891268.html,ng C.java.applet D.java.rmi
8.编译Java程序时,用于指定生成class文件位置的选项是(A)。
A.-d B.-g C.-verbose D.-nowarn
9.下列标识符(名字)命名原则中,正确的是(C)。
A.类名的首字母小写 B.接口名的首字母小写
C.常量全部大写 D.变量名和方法名的首字母大写
10.下面哪些选项是正确的main方法说明?(D)
A.void main() B.private static void main(String args[]) C.public main(String args[]) D.public static void main(String args[]) 11.下面哪种注释方法能够支持javadoc命令?(C)
A.// B./*...*/ C./**...*/ D./**...**/
1.下面哪些标识符在Java语言中是合法的?(AB)
A.persons$ B.TwoUsers C.*point D.instanceof F.end-line
2.下列(D)是合法标识符。
A.2end B.-hello C.=AB D.整型变量
3.已知int i = 2 147 483 647; ++i; 则i的值等于(A)。
A.- 2 147 483 648 B.2 147 483 647 C.2 147 483 648 D.-1 4.若x = 5,y = 8,则表达式x|y的值为(B)。
A.3 B.13 C.0 D.5
5.若定义有变量float f1,f2 = 8.0F,则下列说法正确的是(B)。
A.变量f1,f2均被初始化为8.0 B.变量f1没有被初始化,f2被初始化为8.0 C.变量f1,f2均未被初始化 D.变量f2没有被初始化,f1被初始化为8.0 6.基本数据类型short的取值范围是(B)。
A.(-256)~ 255 B.(-32 768)~ 32 767 C.(-128)~ 127 D.0~65 5 35
7.下列(B)是不能通过编译的语句。
A.double d = 545.0; B.char a1 = “c”; C.int i = 321; D.float f1 =4 5.0f;
8.若定义有short s; byte b; char c; 则表达式s * b + c的类型为(C)。
A.char B.short C.int D.byte
9.下列循环语句的循环次数是(B)。
int i=5;
do { System.out.println(i--);
i--;
}while(i!=0);
A.5 B.无限 C.0 D.1
10.下列代码哪几行会出错?(C)
1) public void modify() {
2) int I, j, k;
3) I = 100;
4) while (I > 0) {
5) j = I * 2;
6) System.out.println(" The value of j is " + j);
7) k = k + 1;
8) I--;
9) }
10 }
A.line 4 B.line 6 C.line 7 D.line 8
11.下列关于数组的定义形式,哪些是错误的?(ABC)
A.int[ ]c=new char[10]; B.int[ ][3]=new int[2][ ];
C.int[ ]a; a=new int; D.char b[ ]; b=new char[80];
12.执行String[] s=new String[10];语句后,哪些结论是正确的?(BC)
A.s[0] 为未定义 B.s.length 为10
C.s[9] 为 null D.s[10] 为 ""
13.下列关于Java语言的数组描述中,错误的是(D)。
A.数组的长度通常用length表示 B.数组下标从0开始
C.数组元素是按顺序存放在内存的 D.数组在赋初值和赋值时都不判界
14.下面的表达式哪些是正确的? (ACE)
A.String s="你好";int i=3; s+=i;
B.String s="你好";int i=3; if(i==s){ s+=i};
C.String s="你好";int i=3; s=i+s;
D.String s="你好";int i=3; s=i+;
E. String s=null; int i=(s!=null)&&(s.length()>0)?s.length():0;
15.下列代表十六进制整数的是(C)。
A.012345 B.2008 C.0xfa08 D.fb05
16.在switch(expression)语句中,expression的数据型不能是(C)。
A.char B.short C.double D.byte
17.下列说法正确的是(AC)。
A.表达式“1+2>3”的值是false B.表达式“1+2||3”是非法的表达式
C.表达式“i+j=1”是非法的表达式 D.表达式“1+2>3”的值是true
18.指出正确的表达式(B)。
A.byte=128; B.long l=0xfffL; C.Boolean=null; D.double=0.9239d; 19.public class T18 {
static int arr[] = new int[10];
public static void main(String a[]) {
System.out.println(arr[1]);
}
}
哪个语句是正确的?(C)
A.编译时将产生错误 B.编译时正确,运行时将产生错误
C.输出零 D.输出空
20.若String s = "hello"; String t = "hello"; char c[] = {'h','e','l','l', 'o'} ; 则下列哪些表达式返回true?(AB)
A.s.equals(t); B.t.equals(new String("hello"));
C.t.equals(c); D.s==t;
21.执行下面的代码段:
switch(m){ case 0: System.out.println("case 0");
case 1: System.out.println("case 1"); break;
case 2:
default: System.out.println("default");
}
下列m的哪些值将引起"default"的输出?(CD)
A.0 B.1 C.2 D.3
22.下列关于“<<”和“>>”的运算,哪些是正确的?(AC)
A.0000 0100 0000 0000 0000 0000 0000 0000<<5 的运行结果是
1000 0000 0000 0000 0000 0000 0000 0000
B.0000 0100 0000 0000 0000 0000 0000 0000<<5的运行结果是
1111 1100 0000 0000 0000 0000 0000 0000
C.1100 0000 0000 0000 0000 0000 0000 0000>>5的运行结果是
1111 1110 0000 0000 0000 0000 0000 0000
D.1100 0000 0000 0000 0000 0000 0000 0000>>5的运行结果是
0000 0110 0000 0000 0000 0000 0000 0000
22.下面关于封装性的描述中,错误的是(D)。
A.封装体包含属性和行为 B.被封装的某些信息在外不可见
C.封装提高了可重用性 D.封装体中的属性和行为的访问权限相同
23.下面关于类方法的描述,错误的是(B)。
A.说明类方法使用关键字static B.类方法和实例方法一样均占用对象的内存空间C.类方法能用实例和类名调用 D.类方法只能处理类变量或调用类方法
24.下面关于包的描述中,错误的是(A)。
A.包是若干对象的集合B.使用package语句创建包
C.使用import语句引入包D.包分为有名包和无名包两种
25.下述哪些说法是正确的?(BC)
A.用static关键字声明实例变量B.实例变量是类的成员变量
C.局部变量在方法执行时创建D.局部变量在使用之前必须初始化
26.下面哪些代码段是正确的Java源程序?(BCD)
A.import java.io.*; B.import java.io.*;
package testpackage; class Person{/* do something... */}
public class Test{/* do something... */} public class Test{/* do so mething... */}
C.import java.io.*; D.package testpackage;
import java.awt.*; public class Test{/* do somethin g... */}
public class Test{/* do something... */}
27.下面关于类的继承性的描述中,错误的是(C)。
A.继承是在已有的基础上生成新类的一种方法
B.Java语言要求一个子类只有一个父类
C.父类中成员的访问权限在子类中将被改变
D.子类继承父类的所有成员,但不包括私有的成员方法
28.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是(B)。
A.默认 B.protected C.private D.public
3.在类的修饰符中,规定只能被同一包类所使用的修饰符是(B)。
A.public B.默认 C.final D.abstract
29.下列关于子类继承父类的成员描述中,错误的是(C)。
A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。
B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。
C.子类中继承父类中的所有成员都可以访问。
D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。
30.定义一个类名为“MyClass.java”的类,并且该类可被一个工程中的所有类访问,则下面哪些声明是正确的?(AB)
A.public class MyClass extends Object B.public class MyClass
C.private class MyClass extends Object D.class MyClass extends Object 31.下列关于继承性的描述中,错误的是(C)。
A.一个类可以同时生成多个子类B.子类继承了父类中除私有的成员以外的其他成员C.Java支持单重继承和多重继承 D.Java通过接口可使子类使用多个父类的成员32.下列关于抽象类的描述中,错误的是(C)。
A.抽象类是用修饰符abstract说明的B.抽象类是不可以定义对象的
C.抽象类是不可以有构造方法的D.抽象类通常要有它的子类
33.设有如下类的定义:
public class parent {
int change() {}
}
class Child extends Parent { }
则,下面哪些方法可加入Child类中?(AB)
A.public int change(){ } B.int chang(int i){ }
C.private int change(){ } D.abstract int chang(){ }
34.下列关于构造方法的叙述中,错误的是(D)。
A.构造方法名与类名必须相同B.构造方法没有返回值,且不用void声明
C.构造方法只能通过new自动调用D.构造方法不可以重载,但可以继承
35.下面叙述中,错误的是(C)。
A.子类继承父类 B.子类能替代父类 C.父类包含子类 D.父类不能替代子类36.下列对多态性的描述中,错误的是(B)。
A.Java语言允许方法重载与方法覆盖 B.Java语言允许运算符重载
C.Java语言允许变量覆盖 D.多态性提高了程序的抽象性和简洁性37.下面关于接口的描述中,错误的是(A)。
A.一个类只允许继承一个接口 B.定义接口使用的关键字是interface
C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现
D.接口实际上是由常量和抽象方法构成的特殊类
38.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?(C)
A.ArrayList myList=new Object(); B.ArrayList myList=new List();
C.List myList=new ArrayList(); D.List myList=new List();
39.下列哪些方法与方法public void add(int a){}为合理的重载方法?(A CD)A.public void add(char a) B.public int add(int a)
C.public void add(int a,int b) D.public void add(float a)
40.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是(C)。
A.public int MAX_LENGTH=100; B.final public int MAX_LENGTH=100;
C.public final int MAX_LENGTH=100; D.final int MAX_LENGTH=100;
41.可实现有序对象的操作有哪些?(CD)
A.HashMap B.HashSet C.TreeMap D.LinkedList
42.迭代器接口(Iterator)所定义的方法是(ABC)。
A.hasNext() B.next()
C.remove() D.nextElement()
43.下列方法属于https://www.wendangku.net/doc/4415891268.html,ng.Math类的有(方法名相同即可)(ABCD)。
A.random() B.abs() C.sqrt() D.pow()
44.指出正确的表达式有(AB)。
A.double a=2.0; B.Double a=new Double(2.0);
C.byte A= 350; D.Byte a = 120;
45.System类在哪个包中?(B)
A.java.awt B.https://www.wendangku.net/doc/4415891268.html,ng C.java.util D.java.io
46.关于Float,下列说法正确的是(ACD)。
A.Float在https://www.wendangku.net/doc/4415891268.html,ng包中 B.Float a=1.0是正确的赋值方法
C.Float是一个类 D.Float a= new Float(1.0)是正确的赋值方法
47.请问所有的异常类皆继承哪一个类?(A)
A.https://www.wendangku.net/doc/4415891268.html,ng.Throwable B.https://www.wendangku.net/doc/4415891268.html,ng.Exception
C.https://www.wendangku.net/doc/4415891268.html,ng.Error D.java.io.Exception
48.哪个关键字可以抛出异常?(B)
A.transient B.throw C.finally D.catch
49.对于已经被定义过可能抛出异常的语句,在编程时(A)。
A.必须使用try/catch语句处理异常,或用throw将其抛出。
B.如果程序错误,必须使用 try/catch语句处理异常。
C.可以置之不理。
D.只能使用try/catch语句处理。
50.下面程序段的执行结果是什么?(B)
public class Foo{
public static void main(String[] args){
try{
return;}
finally{System.out.println("Finally");
}
}
}
A.编译能通过,但运行时会出现一个例外。 B.程序正常运行,并输出 "Finally"。
C.程序正常运行,但不输出任何结果。D.因为没有catch语句块,所以不能通过编译。
二、判断题(每题2分,共50题)
1.Java语言具有较好的安全性和可移植性及与平台无关等特性。(√)
2.Java语言的源程序不是编译型的,而是编译解释型的。(√)
3.Java Application程序中,必有一个主方法main(),该方法有没有参数都可以。(√)
4.java.util.Scanner(System.in)可以接收用户从键盘输入的简单数据。(√)5.Java程序中不区分大小写字母。(×)
6.机器不能直接识别字节码文件,它要经过JVM中的解释器边解释边执行。(√)7.System类中的println()方法分行显示信息,而print()方法不分行显示信息。(√)
8.当前路径的标识是“.”。(√)
9.java命令不区分大小写,而javac命令区分大小写。(×)
10.printf()和 format()方法使用指定格式字符串和参数,将格式化字符串写入到Pr intStream类型的输出流(System.out对象)中。(√)
11.在运行字节码文件时,使用java命令,一定要给出字节码文件的扩展名.class。(×)
12.Java语言使用的是Unicode字符集,每个字符在内存中占8位。(×)
13.Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。(√)14.所有的变量在使用前都必须进行初始化。(×)
15.已知byte i = (byte)127; i = i +1;这两个语句能被成功编译。(√)16.String str="abcdefghi"; char chr=str.charAt(9); (×)
17.char[] chrArray={ 'a', 'b', 'c', 'd', 'e', 'f', 'g'}; c har chr=chrArray [6]; (√)
18.int i,j; boolean booleanValue=(i==j); (×)
19.int intArray[]={0,2,4,6,8}; int length=int Array.length();(×)20.String str="abcedf"; int length=str.length; (×)
21.short shortValue=220; byte byteValue=shortValue; (×)
22.int[] intArray[60]; (×)
23.char[] str="abcdefgh"; (×)
24.说明或声明数组时不分配内存大小,创建数组时分配内存大小。(√)
25.强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。(√)26.类是一种类型,也是对象的模板。(√)
27.类中说明的方法可以定义在类体外。(×)
28.实例方法中不能引用类变量。(×)
29.创建对象时系统将调用适当的构造方法给对象初始化。(√)
30.使用运算符new创建对象时,赋给对象的值实际上是一个引用值。(√)
31.对象可作方法参数,对象数组不能作方法参数。(×)
32.class是定义类的惟一关键字。(√)
33.Java语言会自动回收内存中的垃圾。(√)
34.Java语言中,构造方法是不可以继承的。(√)
35.子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目。(×)
36.抽象方法是一种只有说明而无具体实现的方法。(√)
37.Java语言中,所创建的子类都应有一个父类。(√)
38.调用this 或super构造方法的语句必须放在第一条语句。(√)
39.一个类可以实现多个接口,接口可以实现“多重继承”。(√)
40.实现接口的类不能是抽象类。(√)
41.使用构造方法只能给实例成员变量赋初值。(√)
42.Java 语言不允许同时继承一个类并实现一个接口。(×)
43.Map接口是自Collection接口继承而来。(×)
44.集合Set是通过键-值对的方式来存储对象的。(×)
45.Integer i = (Integer.valueOf("926")).intValue();(√)
46.String s = (Double.valueOf("3.1415926")).toString(); (√)
47.Integer I = Integer.parseInt("926");(√)
48.Arrays类主要对数组进行操作。(√)
49.在集合中元素类型必须是相同的。(√)
50.集合中可以包含相同的对象。(×)
三、填空题(每题3分,共50题)
1.已知:int a =8,b=6; 则:表达式++a-b++的值为(3)。
2.已知:boolean b1=true,b2; 则:表达式! b1 && b2 ||b2的值为(false)。
3.已知:double x=8.5,y=5.8; 则:表达式x++>y--值为(true)。
4.已知:int a[ ]={2,4,6,8}; 则:表达式(a[0]+=a[1])+ ++a[2]值为(13)。
5.执行int x, a = 2, b = 3, c = 4; x = ++a + b++ + c++; 结果是(x=10,a=3, b=4,c=5)。
6.Java中的显式类型转换既能(从低类型向高类型转换)也能从高类型向低类型转换,而隐式类型转换只有前者。
7.在Java中,字符串和数组是作为(对象)出现的。
8.执行下列程序代码的输出结果是(10,11,11)。
int a = 10; int i, j; i = ++a; j = a--;
System.out.printf("%d,%d,%d", a, i, j);
9.执行完boolean x=false; boolean y=true; boolean z=(x&&y)&&(!y) ; int f=z= =false?1:2;
这段代码后,z与f的值分别是(false)和(1)。
1.类是一组具有相同(属性)和(行为)的对象的抽象。(实例)是由某个特定的类所描述的一个个具体的对象。
10.(接口)只描述系统所提供的服务,而不包含服务的实现细节。
11.模型应具有(抽象性)、(可理解性)、(精确性)、(确定性)和廉价性等基本特性。
12.UML定义了(用例图)、(静态图)、(交互图)、行为图和实现图五类模型图。
13.在UML类图中分别用(+)、(#)、(~)和(-)表示属性与方法的公有、保护、默认和私有访问控制权限。
14.在UML中,类之间主要有(关联)、(依赖)、(聚集)、(泛化)和实现五种关系。
15.构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个(默认构造)方法。
16.在方法体内定义的变量是(局部变量),其前面不能加(public),且必须(初始化)。
17.数组元素作实参时对形参变量的数据传递是(单向值传递),数组名作实参时对形参变量的数据传递是(双向引用传递)。
18.对象作方法形参时,方法实参也用对象,实现(引用)调用。
19.(new)是一个特殊的方法,用于创建一个类的实例。
20.对象拷贝有(对象引用复制)、(浅复制)和(深复制)三种。
21.(类)方法不能直接访问其所属类的(实例)变量和(实例)方法,只可直接访问其所属类的(类)变量和(类)方法。
22.(类)变量在内存中只有一个拷贝,被该类的所有对象共享;每当创建一个实例,就会为(实例)变量分配一次内存,(实例)变量可以在内存中有多个拷贝,互不影响。
23.Java使用固定于首行的(package)语句来创建包。
24.在运行时,由java解释器自动引入,而不用import语句引入的包是(https://www.wendangku.net/doc/4415891268.html,ng)。
25.发布Java应用程序或类库时,通常可以使用JDK中自带的(JAR)命令打包。
26.在面向对象系统中,消息分为(公有消息)和(私有消息)两类。
27.类的访问控制符有(public)和(默认default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。
28.类成员的访问控制符有(public)、(protected)、(private)和默认四种。
29.public类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类与非子类)的代码访问引用。
30.protected类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类)的代码访问引用。
31.default类型的类成员只能被(同一类)、同一包中的(子类与非子类)的代码访问引用。
32.private类型的类成员只能被其所在类中的代码访问引用,它只具有(类)域访问性。
33.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。
34.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。
35,将其作为子类的成员,但不能继承父类的(默认)和(private)成员。
36.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。
37.Java的多态性主要表现在(方法重载)、(方法覆盖)和(变量覆盖)三个方面。
38.重写后的方法不能比被重写的方法有(更严格)的访问权限,重写后的方法不能比被重写的方法产生更多的异常。
39.Java语言中,定义子类时,使用关键字(extends)来给出父类名。如果没有指出父类,则该类的默认父类为(Object类)。
40.Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。
41.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(publi c)修饰符。
42.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。
43.this代表(当前对象自身)的引用,super表示的是当前对象的直接父类对象。
44.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。
45.Java不直接支持多继承,但可以通过(接口)实现多继承。类的继承具有(传递)性。
46.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。
47.一个接口可以通过关键字extends来继承(多个)其他接口。
48.接口中只能包含(public static final)类型的成员变量和(public abstract)类型的成员方法。
49.一般地,内部类又分为定义在方法体外的(成员类)和定义在方法体内的(局部类)两种。
50.静态内部类可直接通过外部类名引用,其一般格式是(new 外部类名.内部类构造方法( );)。
四、分析题(每题10分,共10题)
1.分析下面的程序,写出运行结果。
public class Exercises5_1 {
String str = new String("Hi !");
char[] ch = { 'L', 'i', 'k', 'e' };
public static void main(String args[]) {
Exercises5_1 ex = new Exercises5_1();
ex.change(ex.str, ex.ch);
System.out.print(ex.str + " ");
System.out.print(ex.ch);
}
public void change(String str, char ch[]) {
str = "How are you";
ch[1] = 'u';
}
}
运行结果是:(Hi ! Luke)
2.分析下面的程序,写出运行结果。
public class Exercises5_2 {
public static void main(String[] args) {
int n = 1, m, j, i;
for (i = 3; i <= 30; i += 2) {
m = (int) Math.sqrt((double) i);
for (j = 2; j <= m; j++)
if ((i % j) == 0)
break;
if (j >= m + 1) {
System.out.print(i + " ");
if (n % 5 == 0)
System.out.print("\n");
n++;
}
}
}
}
运行结果是:()
3 5 7 11 13
17 19 23 29
3.分析下面的程序,写出运行结果:
public class Exercises5_3 {
public static void main(String args[]) {
String str1 = new String();
String str2 = new String("String 2");
char chars[] = { 'a', ' ', 's', 't', 'r', 'i', 'n', 'g' };
String str3 = new String(chars);
String str4 = new String(chars, 2, 6);
byte bytes[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 };
String str5 = new String(bytes);
StringBuffer strb = new StringBuffer(str3);
System.out.println("The String str1 is " + str1);
System.out.println("The String str2 is " + str2);
System.out.println("The String str3 is " + str3);
System.out.println("The String str4 is " + str4);
System.out.println("The String str5 is " + str5);
System.out.println("The String strb is " + strb);
}
}
运行结果是:()
The String str1 is
The String str2 is String 2
The String str3 is a string
The String str4 is string
The String str5 is 0123456789
The String strb is a string
4、分析下面的程序,写出运行结果。
import java.awt.*;
import java.applet.*;
class MemberVar {
static int sn = 30;
final int fn;
final int fk = 40;
MemberVar() {
fn = ++sn;
}
}
public class Exercises5_1 extends Applet { public void paint(Graphics g) {
MemberVar obj1 = new MemberVar();
MemberVar obj2 = new MemberVar();
g.drawString("obj1.fn=" + obj1.fn, 20, 30);
g.drawString("obj1.fk=" + obj1.fk, 20, 50);
g.drawString("obj2.fn=" + obj2.fn, 20, 70);
g.drawString("obj2.fk=" + obj2.fk, 20, 90);
}
}
运行结果是:()
obj1.fn=31
obj1.fk=40
obj2.fn=32
obj2.fk=40
5.分析下面的程序,写出运行结果。
public class Exercises6_1 extends TT{
public void main(String args[]){
Exercises6_1 t = new Exercises6_1("Tom");
}
public Exercises6_1(String s){
super(s);
System.out.println("How do you do?");
public Exercises6_1(){
this("I am Tom");
}
}
class TT{
public TT(){
System.out.println("What a pleasure!");
}
public TT(String s){
this();
System.out.println("I am "+s);
}
}
运行结果是:()
What a pleasure!
I am Tom
How do you do?
6.分析下面的程序,写出运行结果。
public class Exercises6_2 {
private static int count;
private String name;
public class Student {
private int count;
private String name;
public void Output(int count) {
count++;
this.count++;
Exercises6_2.count++;
Exercises6_2.this.count++;
System.out.println(count + " " + this.count + " "
+ Exercises6_2.count + " " + Exerci ses6_2.this.count++);
}
}
public Student aStu() {
return new Student();
}
public static void main(String args[]) {
Exercises6_2 g3 = new Exercises6_2();
g3.count = 10;
Exercises6_2.Student s1 = g3.aStu();
s1.Output(5);
}
运行结果是:()
6 1 12 12
7.分析下面的程序,写出运行结果。
class Exercises6_3 {
class Dog {
private String name;
private int age;
public int step;
Dog(String s, int a) {
name = s;
age = a;
step = 0;
}
public void run(Dog fast) {
fast.step++;
}
}
public static void main(String args[]) {
Exercises6_3 a = new Exercises6_3();
Dog d = a.new Dog("Tom", 3);
d.step = 29;
d.run(d);
System.out.println(" " + d.step);
}
}
运行结果是:()
30
8.分析下面的程序,写出运行结果。
class Aclass { void go() { System.out.println("Aclass"); } } public class Bclass extends Aclass {
void go() { System.out.println("Bclass"); }
public static void main(String args[]) {
Aclass a = new Aclass();
Aclass a1 = new Bclass();
a.go();
a1.go();
} }
运行结果是:()
Aclass
Bclass
9.计算调用下列方法的结果。
Math.sqrt(4); // 2.0
Math.pow(4, 3); // 64.0
Math.max(2, Math.min(3, 4)); // 3
10.下列程序中构造了一个set并且调用其方法add(),输出结果是( 2 )。
import java.util.*;
public class T1_2 {
public int hashCode() {
return 1;
}
public boolean equals(Object b) {
return true;
}
public static void main(String args[]) {
Set set = new HashSet();
set.add(new T1_2());
set.add(new String("ABC"));
set.add(new T1_2());
System.out.println(set.size());
}
}
五、改错题(每题20分,共6题)
1.找出下面代码的错误部分,说明错误类型及原因,并更正。
public int m1 (int number[20]){
number = new int[20];
for(int i=0;i number[i] = number[i-1] + number[i+1]; return number; } 改正后程序: public int[] m1(int number[]) { // number = new int[20]; for (int i = 1; i < number.length - 1; i++) number[i] = number[i - 1] + number[i + 1]; return number; } 2.找出下面代码的错误部分,说明错误类型及原因,并更正。 (1) int x = 1; while (x <= 10); { i++; } 改正后程序: int x = 1, i = 0; while (x <= 10) { i++; } (2) switch (n) { case 1: system.out.println(""The name is 1"); case 2: system.out.println(""The name is 2"); break; } 改正后程序: int n = 1; switch (n) { case 1: System.out.println("The name is 1"); break; case 2: System.out.println("The name is 2"); break; } 3.下面的程序中有若干个语法错误,找出后请改正。 public class MyMainClass{ public static void main( ) { TheOtherClass obj = new TheOtherClass("John Smith","Male","UK"); System.out.println(https://www.wendangku.net/doc/4415891268.html,+' '+obj.gender+' '+obj.nationality); } System.out.println("The end of the program! ") } public class TheOtherClass{ private String name,gender,nationality; public TheOtherClass(String name,String gender,String nationality) { https://www.wendangku.net/doc/4415891268.html,=name; this.gender=gender; this.nationality=nationality; } } 改正后程序: public class MyMainClass { public static void main(String args[]) { TheOtherClass obj = new TheOtherClass("John Smith", "Male", "UK"); System.out.println(https://www.wendangku.net/doc/4415891268.html, + ' ' + obj.gender + ' ' + obj.nationalit y); System.out.println("The end of the program! "); } } class TheOtherClass { public String name, gender, nationality; public TheOtherClass(String name, String gender, String nationality) { https://www.wendangku.net/doc/4415891268.html, = name; this.gender = gender; this.nationality = nationality; } } 4.下面的程序中有若干个语法错误,找出后请改正。 public class Car{ private String carName; public int mileage; private static final int TOP_SPEED=50; abstract void alert(); public static int getTopSpeed(){ return TOP_SPEED; } public static void setCarName(){ carName="Bensi"; } public static void setMileage(){ mileage=180; } } 改正后程序: public abstract class Car { private String carName; public int mileage; private static final int TOP_SPEED = 50; abstract void alert(); public static int getTopSpeed() { return TOP_SPEED; } public void setCarName() { carName = "Bensi"; } public void setMileage() { mileage = 180; } } 5.找出下面代码的错误部分,说明错误类型及原因,并更正之。 public class Car { private String carName; public int mileage; private static final int TOP_SPEED = 200; abstract void alert(); public static int getTopSpeed() { return TOP_SPEED; } public static void setCarName() { carName = "奥迪"; } public static void setMileage() { mileage = 180; } } 错误:因为含有抽象方法的类,必须是抽象类;静态方法只能访问静态成员。更正: public abstract class Car { private String carName; public int mileage; private static final int TOP_SPEED = 200; abstract void alert(); public static int getTopSpeed() { return TOP_SPEED; } public void setCarName() { carName = "奥迪"; } public void setMileage() { mileage = 180; } } 6.下列代码不能编译的原因是:()。 class A { private int x; public static void main(String args[]) { new B(); } class B { B() {System.out.println(x); } } } 因为在A类的main方法中,还没有A的实例就要试图生成内部类的实例。更正如下: public class A { private int x; public static void main(String args[]) { A a = new A(); a.new B(); } class B { B() { System.out.println(x); } } }