1、 Java程序设计课程考试 试卷类型:(A)一、单项选择题(本大题共15小题,每小题2分,共30分)1、下列数据结构中,哪一项是Java语言所支持的。( A )大工Java程序设计课程考试 模拟试卷(A) 第5页 共5页A数组B结构C联合D指针2、下列选项中,哪一项的组合不是方法重载。( B )Aint abs(int a, int b)和 int abs(int a)Cint abs(float a)和long abs(long a)Bfloat abs(float a)和int abs(float a)Dint abs(int a, int b)和float abs(float a)3、指
2、出下列不正确的赋值表达式。( D )Afloat f=1.7fBchar c=u0000CString str2=abcDboolean b=null4、Java类的成员被protected修饰符修饰,则表示。( C )A该成员仅能被当前类的成员访问 B该成员能被当前类以及当前包中的其他类访问C该成员能被当前类及其子类、或当前包中的其他类访问 D该成员可被所有类访问5、下列关于Java类的说法错误的是。( D )AJava程序中所实现的任何概念都必须在类中 BJava类可以不需要设计析构方法CJava类中的构造方法名必须与类名相同 DJava支持为类中的方法的形式参数指定默认值6、下列关于Ja
3、va类的继承性的说法正确的是。( C )A一个类可以继承多个父类CJava中所有类都是Object的子类B子类继承父类的所有成员方法D子类不能继承父类的所有成员变量7、下列关于抽象类的说法不正确的是。( B )A抽象类中可以不包含抽象方法C构造方法不能被声明为抽象方法B静态成员方法可以被声明为抽象方法D抽象方法没有具体的方法体8、现要构造Triangle类的一个实例,该类继承了Area接口,下面的构造语句正确的是。( C )ATriangle tri = new Object();CArea tri = new Triangle();BTriangle tri = new Area();DAr
4、ea tri = new Area();9、容器重新设置大小后,哪种布局管理器的容器中的组件大小不随容器大小的变化而改变。( A )AFlowLayoutBCardLayoutCBorderLayoutDGridLayout10、下列标识符正确的是。( C )A7maxB+minC_min$maxDpublic11、下列关于java.lang语言包中的类和接口的说法,正确的是。( D )Ajava.lang中包含Cloneable类Cjava.lang中包含Thread接口Bjava.lang中包含Runnable类Djava.lang中包含Runtime类12、下列语句正确的是。( C )A
5、public final class Math extends Object public class MyMath extends MathBpublic abstract class ClosedFigure ClosedFigure g = new ClosedFigure();Cpublic class MyDate MyDate a = new MyDate(); MyDate b = new MyDate(a); DString str = abc; str0= a;13、下列选项中,哪一个可以实现引用当前类自己的成员方法。( A )AthisBinstanceofCprivate
6、Dstatic14、在Java中,负责对字节代码解释执行的是。( C )A编译器B多线程机制C虚拟机D内存处理器15、下列数值中正确代表十六进制数的是。( D )A123B123fC0123D0xa123二、填空题(本大题共10空,每空2分,共20分)1、Java通过 单重继承+接口 方式实现多重继承功能。2、一个类中如果有多个同名方法但带有不同的参数列表,称为方法的 重载;子类重定义父类的成员方法,并且参数列表相同,称为方法的 覆盖。3、 对象 是类的实例,是实际参与程序运行的。4、类的构造方法用于创建类的一个实例并对实例的成员变量进行初始化,它通过 new 运算符调用。5、类本身的访问控制
7、权限有缺省和公有两种,其中缺省权限是指类可被当前包中的类 访问。6、在Java中,规定所有的类都是 Object类 的子类。7、关于重载方法,Java是在 编译 时确定执行重载方法中的哪一个,这也体现类的多态性。8、 Component 组件类是一个抽象类,它是AWT组件类层次结构的根类。9、 JDBC 是基于Java的、用于访问关系型数据库的应用程序接口。三、简答题(本大题共2小题,每小题5分,共10分)1、什么是浅拷贝?什么是深拷贝?二者的区别。一个类的拷贝构造方法,使用一个已知实例对新创建实例的成员变量逐个赋值,这种方法称为浅拷贝;当一个类包含引用类型的成员变量时,该类的拷贝构造方法,不
8、仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并初始化为形式参数实例值,这种复制方式称为深拷贝。二者的区别是浅拷贝实现的是对象成员变量全部是基本数据类型时的复制,而深拷贝可以实现对象成员变量为引用类型时的复制。2、简述Java提供的两种实现多线程程序设计的方法及各自特点。两种实现多线程程序设计的方法分别是继承线程Thread类和实现Runnable接口。继承线程Thread类:声明一个线程类继承Thread类,并且覆盖Thread类的run()方法,说明线程对象所执行的操作。这种方式的优点是,Thread类的子类对象就是线程对象,具有Thread类声明的方法,且具有
9、线程体。缺点是,不适用于多重继承。实现Runnable接口:当一个类已继承一个父类,还要以线程方式运行时,就需要实现Runnable接口和Thread类。一个实现Runnable接口的对象本身不是线程对象,它作为一个线程对象的目标对象使用,因此,同时需要声明一个Thread线程对象。四、读程序题(本大题3小题,每小题6分,共18分)1、写出下面这个程序的运行结果。public class MyDateint year,month,day;void set(int y,int m,int d)year=y;month=m;day=d;void set(MyDate d)set(d.year,d.
10、month,d.day);public String toString()return year+年+month+月+day+日;public static void main(String args)MyDate d1 = new MyDate();d1.set(2011,1,1);MyDate d2 = d1;System.out.println(d1: +d1.toString()+,d2: +d2.toString();d2.year = 2009;System.out.println(d1: +d1.toString()+,d2: +d2.toString();d1: 2011年1月
11、1日 , d2: 2011年1月1日 d1: 2009年1月1日 , d2: 2009年1月1日2、第1题程序中,将主方法改为如下,写出运行结果。public static void main(String args)MyDate d1 = new MyDate();d1.set(2011,1,1);MyDate d2 = new MyDate();d2.set(d1);System.out.println(d1: +d1.toString()+,d2: +d2.toString();d2.year = 2009;System.out.println(d1: +d1.toString()+,d
12、2: +d2.toString();d1: 2011年1月1日 , d2: 2011年1月1日 d1: 2011年1月1日 , d2: 2009年1月1日3、读取下列程序,写出输出结果。class Animalpublic Animal()System.out.println(Animal);public class Dog extends Animalpublic Dog()System.out.println(Dog is one kind of Animal);public static void main(String args)Animal a = new Animal();Dog
13、d = new Dog();Animal Animal Dog is one kind of Animal五、编程题(本大题2小题,每小题11分,共22分)1、编写一个输出“Hello World”的程序,用Application和Applet两种方式实现。public class HelloWorld public static void main(String args) System.out.println(Hello,World!); import java.awt.Graphics;import java.applet.Applet;public class HelloWorld e
14、xtends Applet String s;public void init() s=Hello World!;public void paint(Graphics g) g.drawString(s,25,25);2、请编写一个判断输入数字是否是素数的Java程序。import java.util.Scanner;public class PrimeNumberpublic static boolean isPrime(int num)boolean prime = true;int limit = (int) Math.sqrt(num);for (int i = 2; i = limit; i+)if (num % i = 0)prime = false;break;return prime;public static void main(String args)Scanner input = new Scanner(System.in);System.out.print(请输入您要判断的数:);int n = input.nextInt();if (isPrime(n)System.out.println(n + 是质数!);elseSystem.out.println(n+ 不是质数!);