JAVA程序设计练习测试题及参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一部分
《Java程序设计》练习测试
[说明]:要求所有答案务必写在答题纸的相应题号位置上,否则不予评分。
一、单选择题(共10分,每小题2分)
1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。
A .class
B .html
C .java
D .exe
2、设int x = 1 , y = 2 , z = 3;则表达式y+=z--/++x 的值是( )。
A 3
B 3. 5
C 4
D 5
3、在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( )方法来完成一些画图操作。
A start( )
B stop( )
C init( )
D paint( )
4、不允许作为类及类成员的访问控制符的是( )。
A public
B static
C private
D protected
5、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。
A final void method( );
B public void method( );
C static void method( );
D abstract void method( );
二、填空题(共20分,每空格1分)
1、开发与运行Java程序需要经过的三个主要步骤为⑴、⑵和⑶。
2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是⑷类的子类并且存储该源程序文件的文件名为⑸。
3、如果一个Java Applet程序文件中定义有4个类,则使用Sun公司的JDK编译器⑹
编译该源程序文件将产生⑺个文件名与类名相同而扩展名为⑻的字节码文件。
4、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用⑼字节内存空间,这样,无论是中文字符还是英文字符,都是占用⑽字节内存空间。
5、设int y = 5; 则表达式( y++ )/6 的值是⑾。
6、若int x = 5,y = 10; 则x<y和x>= y的逻辑值分别为⑿和⒀。
7、⒁方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。
⒂方法是不能被当前类的子类重新定义的方法。
8、创建一个名为MyPackage 的包的语句是⒃,该语句应该放在程序的位置为:⒄。
9、设有数组定义:int a[ ] = { 20 , 30 , 40 , 50 , 60 , 70 , 80,90,100,110,120,130}; 则执行以下几个语句后的输出结果是⒅。
int s =0;
for( int i =0; i < a.length ; i ++)
if( i%4==0) s +=a[i] ;
System.out.println(s);
10、在Java程序中,通过类的定义只能实现⒆重继承,但通过接口的定义可以实现⒇重继承关系。
三、写出下列程序完成的功能。
(每小题5分,共20分)
1、
public class Sum
{ public static void main( String args[ ])
{ double sum = 0.0 ;
int sign=-1.0;
for ( int i = 1 ; i <=50; i+=2 ){
sign*=-1;
sum += sign/(double) i ;}
System.out.println( "sum="+sum );
}
}
2、
import java.io.* ;
public class Reverse
{ public static void main(String args[ ])
{ int i , n =10 ;
int a[]=new int[20];
for ( i = 0 ; i < n ; i ++ )
try {
BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
a[i] = Integer.parseInt(br.readLine( )); // 输入一个整数
} catch ( IOException e ) { } ;
For( i = n-1; i >= 0 ; i -- )
System.out.print(a[i]+" ");
System.out.println( );
}
}
3、
import java.awt.*;
public class abc{
public static void main(String args[]){ new FrameOut(); }
}
class FrameOut extends Frame //Frame为系统定义的窗框类
{ Button btn;
FrameOut( )
{
super("JUST”);
btn = new Button("MIS");
setLayout(new FlowLayout( ));
add(btn);
setSize(300,200);
show( );
}
}
4、import java.io.*;
public class abc
{ public static void main(String args[])
{ SubClass sb = new SubClass( );
System.out.println(sb.min( ));
}
}
class SuperClass
{ int a = 25 , b = 70 ; }
class SubClass extends SuperClass
{ int min()
{ return ((a<b)?a:b); }
}
四、写出下面程序的运行结果(每小题10分,共30分)
1、import java.io.*;
public class abc
{ public static void main(String args[ ])
{ AB s = new AB("Hi!","Nice to meet you.");
System.out.println(s.toString( ));
}
}
class AB {
String s1;
String s2;
AB( String str1 , String str2 )
{ s1 = str1; s2 = str2; }
public String toString( )
{ return s1+s2;}
}
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,100,110,120,130,140,150 };
for ( i = 0 ; i < a.length ; i ++ ) if ( a[i]%3 == 0 ) s += a[i] ;
System.out.println("s="+s);
}
}
3、import java.io.* ;
public class abc{
public static void main(String args[ ]){
SubSubClass a1=new SubSubClass(40,50,60);
a1.show();
SuperClass a2=new SuperClass(70,80);
a2.show();
}
}
class SuperClass{
int a,b;
SuperClass(int aa,int bb){
a=aa; b=bb;
}
public void show(){
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 extends SubClass
{ int a;
SubSubClass(int aa,int bb,int cc)
{ super(aa,bb,cc);
a=aa+bb+cc;
}
public void show()
{ System.out.println("a="+a+"\nb="+b+"\nc="+c); }
}
五、使用Java语言编写程序(共20分).
创建类Computer,该类中有一个计算两个数的最大公约数的方法。
如果向该方法传递负整数,该方法就会抛出用户自定义异常。
要求:用户自定义的异常类名为MyException。
《Java程序设计》练习测试参考答案及评分标准
一、单选择题(共10分,每小题2分)
二、填空题(共20分,每空格1分)
⑴编辑源程序⑵编译生成字节码⑶解释运行字节码
⑷Applet ⑸MyApplet
⑹javac.exe ⑺ 4 ⑻. class
⑼ 2 ⑽ 2 ⑾0 ⑿true ⒀false
⒁抽象或abstract ⒂最终或final
⒃package MyPackage ; ⒄应该在程序第一句
⒅180 ⒆单⒇多
三、程序功能。
(共20分,每小题5分)
⒈sum=1-1/3+1/5-1/7+1/9-1/11+…+1/49
⒉从标准输入(即键盘)读入20个整数存入整型数组a中,然后逆序输出这10个整数。
⒊创建一个标题为"JUST"的窗框,窗框中显示有"MIS"字样的按钮。
⒋求两个数的最小值。
四、程序运行结果(共30分,每小题10分)
⒈Hi!Nice to meet you.
⒉s=450
⒊a=150
b=50
c=60
a=70
b=80
五、用Java语言编程(共20分)
// MyException.java
public class MyException extends Exception {
String message;
public MyException(String ErrorMessagr) {
message = ErrorMessagr;
}
public String getMessage(){
return message;
}
}
// Computer.java
public class Computer {
public static int getMaxComm(int m , int n) throws MyException{ if( m <= 0 ||n<=0){
throw new MyException("传递的参数不是正整数");
}
if(m < n){
int temp = 0;
temp = m;
m = n;
n = temp;
}
int r = m % n;
while(r!=0){
m = n;
n = r;
r = m % n;
}
return n;
}
public static void main(String[] args) {
try {
int m = 122 , n= 0;
int result= getMaxComm(m,n);
System.out.println(m+" 和"+n+"的最大共约数是:"+result);
}
catch (MyException e) {
e.printStackTrace();
}
}
}
第二部分
Java练习题及参考答案:
一、选择题:
(1)用于设置组件大小的方法是 B 。
A)paint() B)setSize() C)getSize() D)repaint()
(2)单击窗口内的按钮时,产生的事件是 C 。
A) MouseEvent B) WindowEvent C) ActionEvent D) KeyEvent
(3)AWT中用来表示对话框的类是 D 。
A) Font B) Color C)Panel D)Dialog
(4)下列运算符中,优先级最高的是 D 。
A)+= B) == C)&& D)++
(5)下列运算结果为1的是 B 。
A) 8>>1 B) 4>>>2 C) 8<<1 D)4<<<2
(6)下列语句中,可以作为无限循环的语句是 A 。
A)for(;;){ } B) for(int i=0;i<10000;i++){} C) while(false){} D) do{} while(false);
(7)下列表达式中,类型可以作为int的是 C 。
A)”abc”+”efg” B) “abc”+’efg’ C) ‘a’+’b’ D)3+”4”
(8)阅读下列程序:
public class Test implements Runnable{
private int x=0;
private int y=0;
boolean flag=true;
public static void main(String []args){
Test r=new Test();
Thread t1=new Thread(r);
Thread t2=new Thread(r);
t1.start();
t2.start();
}
public void run(){
while(flag){
x++;
y++;
System.out.println("("+x+","+y+")");
if(x>=10)
flag=false;
}
}
}
下列对程序运行结果描述的选项中,正确的是 D 。
A)每行的(x,y)中,可能有x≠y;每一对(x,y)值都出现两次
B)每行的(x,y)中,可能有x≠y;每一对(x,y)值都出现一次
C)每行的(x,y)中,可能有x=y;每一对(x,y)值都出现两次
D)每行的(x,y)中,可能有x=y;每一对(x,y)值都出现一次
(9)如果线程正处于运行状态,则它可能到达的下一个状态是 C 。
A)只有终止状态B) 只有阻塞状态和终止状态
C) 可运行状态,阻塞状态,终止状态D) 其他所有状态
(10)在下列程序的空白处,应填入的正确选项是 B 。
import java.io.*;
public class writeInt {
public static void main(String[] args) {
int []myArray={10,20,30,40};
try{
DataOutputStream dos=new DataOutputStream(new FileOutputStream("ints.dat"));
for(int i=0;i<myArray.length;i++)
dos.writeInt(myArray[i]);
dos. ;
System.out.println("Have written binary file ints.dat");
}
catch(IOException ioe){
System.out.println("IOException");
}
}
}
A) start B) close C)read D) write
(11)在一个线程中调用下列方法,不会改变该线程运行状态的是 B 。
A) yield 方法B) 另一个线程的join方法C) sleep 方法D)一个对象的notify方法
(12)在关闭浏览器时调用,能够彻底终止Applet并释放该Applet所有资源的方法是 B 。
A) stop() B)destroy() C)paint() D)start()
(13)为了将HelloApplet(主类名为HelloApplet.class)嵌入在greeting.html文件中,应该在下列
greeting.html文件的横线处填入的代码是 C 。
<HTML>
<HEAD>
<TITLE> Greetings</TITLE>
</HEAD>
<BODY>
<APPLET >
<APPLET>
</BODY>
</HTML>
A) HelloApplet.class
B) CODE=” HelloApplet.class”
C) CODE=” HelloApplet.class” WIDTH=150 HEIGHT=25
D) CODE=” HelloApplet.class” VSPACE=10 HSPACE=10
(14)下列变量名的定义中,符合Java命名约定的是 A 。
A) fieldname B) super C) Intnum D)$number
(15)自定义异常类的父类可以是 C 。
A) Error B) VirtualMachineError C) Exceeption D)Thread
(16)阅读下列程序片段:
public void test(){
try{
sayHello();
System.out.println("Hello");
}
catch(ArrayIndexOutOfBoundException e){
System.out.println("ArrayIndexOutOfBoundException");
}
catch(Exception e){
System.out.println("Exception");
}
finally{
System.out.println("finally");
}
}
如果sayHello()方法正常运行,则test()方法的运行结果将是 D 。
A) Hello B) ArrayIndexOutOfBoundException
C) Exception D) Hello
Finally finally
(17)为使Java程序独立于平台,Java虚拟机把字节码与各个操作系统及硬件 A 。
A) 分开B) 结合C) 联系D)融合
(18)Java中的基本数据类型int在不同操作系统平台的字长是 B 。
A) 不同的B) 32位C) 64位D) 16位
(19)String、StringBuffer都是 C 类,都不能被继承。
A) static B) abstract C) final D) private
(20)忽略
(21)构造方法必须与 A 相同,它没有返回值,用户不能直接调用它,只能通过new调用。
A) 类名B) 对象名C) 包名D) 变量名
(22)在多线程并发程序设计中,能够给对象x加锁的语句是 B 。
A) x.wait() B) synchronized(x) C) x.notify() D) x. synchronized( )
(23)Java中类ObjectOutputStream支持对象的写操作,这是一种字节流,它的直接父类是
C 。
A) Writer B) DataOutput C) OutputStream D) ObjectOutput
(24)略
A) B) C) D)
(25)Class类的对象由 A 自动生成,隐藏在.class文件中,它在运行时为用户提供信息。
A) Java编译器B) Java解释器C) Java new 关键字D) Java类分解器
(26)在Java中,实现用户界面功能的包是 D 。
A) java.applet B) java.transaction C) java.util D)java.awt
(27)”++”运算符的操作数个数是 A 。
A) 1个B) 2个C) 3个D) 4个
(28)在switch(expression)语句中,expression的数据类型不能是 A 。
A) double B) char C) byte D) short
(29)下列叙述中,错误的是 D 。
A) 父类不能替代子类B) 子类能够替代父类C) 子类继承父类D) 父类包含子类
(30)已知:int []a=new int[100];在下列给出的数组元素中,非法的是 D 。
A) a[0] B) a[1] C) a[99] D) a[100]
二、简单应用题—填空(24分)
本题要求:创建了一个线程,连续输出6行字符中“Hello!”
完善程序。
public class Java_2 {
public static void main(String[] args) {
Hello h=new Hello();
Thread t
t.start();
}
}
class Hello implements Runnable{
int i=0;
public void run(){
while(true){
System.out.println("Hello!");
if(i++==5) break;
}
}
}
四、综合应用题—填空(18分,每空6分)
以下程序的功能是单击“黄色”按钮,使图形用户界面窗口的背景色变为黄色,运行结果如下:
请完善程序。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Java_3 {
public static void main(String[] args) {
ButtonFrame frame=new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class ButtonFrame extends JFrame{
public ButtonFrame(){
setTitle("测试按钮");
setSize(DEFAULT_WIDTH,DEFAULT_HEYGHT);
ButtonPanel panel=new ButtonPanel();
Container contentPane=getContentPane();
contentPane.add(panel);
}
public static final int DEFAULT_WIDTH=200;
public static final int DEFAULT_HEYGHT=100;
}
class ButtonPanel extends JPanel{
public ButtonPanel(){
JButton yellowButton=new JButton("黄色");
add(yellowButton);
ColorAction yellowAction=new ColorAction(Color.YELLOW);
yellowButton.addActionListener(yellowAction);
}
private class ColorAction implements ActionListener{ public ColorAction(Color c){
backgroundColor=c;
}
public void actionPerformed(ActionEvent event){
setBackground(backgroundColor);
}
private Color backgroundColor;
}
}。