《Java程序设计》练习题(一)【含部分答案】
《Java程序设计》练习题(一)【含部分答案】《Java程序设计》练习题(一)
一、选择题(每小题2分,共40分)
1.下面关于Java语言说法错误的是:( ) B
A. java语言是完全面向对象的 B. java语言支持多继承
C. java语言支持多线程 D. java语言最早是为消费电子产品领域设计的
2.下面标识符中正确的是:( )D
A. *123 B. 12java C. continue D. java$next
3.下列关于注释语句的描述中,正确的一项是( )C
A.以//开始的是多行注释语句
B.以/*开始,*/结束的是单行注释语句
C.以/**开始,*/结束的是可以用于生成帮助文档的注释语句
D.以/**开始,*/结束的是单行注释语句
4.为了区分重载多态中同名的不同方法,要求( )。A
A.形式参数个数或者类型不同 B.返回值类型不同
C.调用时用类名或对象名做前缀 D.形式参数名称不同
5.下面定义数组的格式中正确的是:( )C
A. int a[10] B. int a=new int[10] C. int []a=new int[5] D. int a[]
6.下面说法中不正确的是:( )C
A.类是对象的抽象,对象是类的实例 B.类是组成java程序的最小的单位
C. java语言支持多继承 D. java一个程序中只能有一个public类
7.定义类时,不可能用到的保留字是( )。A
A. private B. class
C. extends D. implements
8.为 AB 类定义一个公共的构造函数,该方法头的形式为( )D
A. void AB( ) B. public void method( )
C. public method ( ) D. public AB( )
9.下面说法中不正确的是:()A
A. java中一个类只允许实现一个接口 B. 抽象类中允许有非抽象方法的存在
C.类变量(实例变量)可以直接用类名调用 D. 通过super可以调用基类的构造函数
10.哪一个输出-4.0 ? ( ) C
A. System.out.println(Math.floor(-4.7)); B. System.out.println(Math.round(-4.7));
C. System.out.println(Math.ceil (-4.7)); D. System.out.println(Math.min(-4.7));
11.以下哪个表达式是不合法的:( )B
A. String x=”Hello”; int y=9; x+=y;
B. String x=”Hello”; int y=9; if(x= =y) { }
C. String x=”Hello”; int y=9; x=x+y;
D. String x=null; int y=(x!=null)&&(x.length()>0)
12.class person{
public int addvalue(int a,int b) {
int s;
s=a+b;
return s;
}
}
class child extends parent{
}
若要在child类中对addvalue方法进行重写,下面对于child类中的addvalue方法头的描述哪个是正确的:( )A
A. int addvalue(int I,int j) B. void addvalue()
C. void addvalue(double i) D. int addvalue(int a)
13.下面程序在fun()方法当出现数组下标超过界限的情况下的输出结果是:( )C
public void test(){
try{
fun();
System.out.print(“情况1”);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.print(“情况2”);
}
catch(Exception e){
System.out.print(“情况3”);
}
finally{
System.out.print(“finally”);
}
}
A.情况1 B.情况2 C.情况2finally D.情况3finally
14、哪二种声明防止方法覆盖?( ) A C
A、final void methoda() {}
B、void final methoda() {}
C、static final void methoda() {}
D、final abstract void methoda() {}
15.编译下例代码哪些没有错误? ( ) B C
A. import java.awt.*; B. package Mypackage;
package Mypackage; import java.awt.*;
class Myclass{} class Myclass{}
C. /* This is a comment */ D.//This is a comment//
package Mypackage; import java.*;
import java.awt.*; package Mypackage;
class Mycalss{} class Myclass()
16. 编译和执行下例代码会输出什么? ( ) C
public class Q
public static void main(String argv[]){
int anar[]=new int[5];
System.out.println(anar[0]);
}
}
A. Eror:anar is referenced before it is initialized B. null C. 0 D. 5
17. 编译和执行下例代码会输出什么?( ) C
abstract class MineBase {
abstract void amethod();
static int i;
}
public class Mine extends MineBase {
public static void main(String argv[]){
int[] ar=new int[5]
for(i=0;i<ar.length;i++)
system.out.println(ar[i]);
}
}
A. a sequence of 5 0’s will be printed B. Error:ar is used before it is initialized
C. Error Mine must be declared abstract D. IndexOutOfBoundes Error
18.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?( ) B
A. ArrayList myList=new Object(); B. List myList=new ArrayList();
C. ArrayList myList=new List(); D. List myList=new List();
19.指出下列程序运行的结果: ( ) B
public class Example{
String str=new String("good");
char[]ch={'a','b','c'};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
Sytem.out.print(ex.ch);
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
}
A. good and abc B. good and gbc C. test ok and abc D. test ok and gbc
20.给出下面代码: C
public class Person{
static int arr[] = new int[10];
public static void main(String a[]) {
System.out.println(arr[1]);
}
}
那个语句是正确的? ( )
A. 编译时将产生错误; B. 编译时正确,运行时将产生错误; C. 输出零; D. 输出空
二、判断题(每小题1分,共10分)
( T ) 1、Java可以用来进行多媒体及网络编程。
( F ) 2、类的public类型的成员变量不可以被继承。
( F ) 3、用final修饰的类必须被继承。
( F ) 4、子类可以继承父类所有的成员变量及成员函数。
( T ) 5、Java编译器使用文件系统来保存程序包。
( F ) 6、Java类中不能存在同名的两个成员函数。
( T ) 7、可以用new来创建一个类的实例,即“对象”。
( T ) 8、接口是特殊的抽象类。
( T ) 9、封装的原则是用公有的方法访问私有的数据。
( F ) 10、Java中类的构造函数只能有一个。
三、程序理解题(共20分)
1、指出下面代码的错误:(2分)
for(i=0;i<10;i++)
{
int sum;
sum=sum+i;
}
System.out.println(“sum is:”+ sum);
_____________________________
2、写出程序运行的结果:(2分)
Class CastDemo{
public static void main(String arg[]){
double x,y;
byte b;
int I;
x=10.0
y=3.0;
i=(int) (x/y);
System.out.println(“Integer outcome of x/y: ”+i);
i=257;
b=(byte) i;
System.out.println(“Value of b: ”+b);
}
}
运行结果:___ Integer outcome of x/y: 3_____ Value of b: 1____________
3、本程序计算的是幂为2 的指数从0到9 的整数值,把程序补充完整。(2分)
class power{
public static void main(String arg[]){
int e,result;
for(int i=0;i<10;1++){
result=1;
____e=i_____________;
while(e>0){
result*=2;
___e--______________
}
System.out.println(“2 的”+i+”方是”+result);
}
}
}
4、本程序是找数组中的最大值和最小值,把程序补充完整。(2分)
class MinMax{
public static void main(String arg[]){
int nums[] = ______ new int[10]___ ____;
int min,max;
nums[]={99,11,18,-3,88,93,1298,-28,74,11};
_____ min=max=nums[0]____________________;
for(int i=1;i<10;i++){
if(nums[i]<min) min=nums[i];
if(nums[i]>max) max=nums[i];
}
System.out.println(“min and max: ”+min +” ”+max);
}
}
5、写出程序运行的结果:(2分)
class Test{
public static void main(String arg[]){
int s=0,i=1;
while(i<=20){
try{
if(i%5!=0){
i++;
continue;
}
s=s+i;
}finally{
i=i+2;
}
}
System.out.println(“ s= ”+s);
}
}
运行结果:_________45________________
6、在空行处写上合适的异常对象。(3分)
public class Try2 {
public static void main (String args[]) {
int i=0;
int a[] = {5,6,7,8};
for(i=0;i<5;i++) {
try {
System.out.print("a["+i+"]/"+i+"="+(a[i]/i));//本语句可能会出现数组下标、除数为零或其他未知异常
}
catch(__ArrayIndexOutOfBoundsException e __________) {
System.out.print("捕获数组下标越界异常!");
}
catch(____ArithmaticsException e____________________) {
System.out.print("捕获算术异常!");
}
catch(_________Exception e_____________________) {
System.out.print("捕获"+e.getMessage()+"异常!"); //显示异常信息
}
finally {
System.out.println(" i="+i);
}
}
System.out.println("继续!");
}
}
7、本程序是无参数交换两个变量的值。(7分)
class Test{
int a,b;
Test(int i,int j){
a=i;
b=j;
}
Void change(Test T){
____T.b=T.a+T.b___________
____T.a=T.b-T.a___________
____T.b=T.b-T.a___________
}
public _____ static void main _____________ (String args[])
{
Test T=new Test(30,38);
System.out.println(“原始值:”+___T.a+” ”_T.b____________);
___T.change(T)__________________________________;
System.out.println(“交换后:”+____ T.a+” ”_T.b ____________);
}
}
四、简答题(共10分)
1、String s = new String("xyz");创建了几个String Object? (2分)
2、解释面向对象语言的几个特征:抽象、继承、封装、多态性。(2分)
3、撰写具有两个(重载)构造函数的test类,并在第一个构造函数内通过this调用第二个构造函数。(2分)
4、final, finally, finalize的区别。Overload和Override的区别。(4分)
五、编程题(共20分)
1、编写一个Applet应用程序,输出字符串“国庆节快乐!”。 (5分)
2、写出一个Point(点)类,该类具有x,y(表示点的横、纵坐标)两个属性,并定义两个构造方法,一个无参数,将x,y均设置为0,另一对坐标值为参数,设置x,y为给定坐标值。该类的show方法输出该点的坐标值。(7分)
class Point{
Int x,y;
Point(){}
Point (int x,int y){}
Point show(){}
}
3、有矩形类Rectangle,该类有两个成员变量length、width;接口Area中有求面积成员方法area();接口Volume中有求体积成员方法volume();要求定义一个长方体类继承矩形类,实现表面积和体积的计算。程序编写要求:(1)写出矩形类的代码;(2)写出接口的代码;(3)写出长方体类的代码(包括成员变量、构造方法及表面积和体积的计算方法)。(8分)
class Rectangle{
int length,width;
}
interface Area(){
abstract double area(){}
abstract double volume(){}
}
class cube extends Rectangle{
double area(){}
double volume(){}
public static void main(String args[]){}
}
)
一、选择题(每小题2分,共40分)
1.下面关于Java语言说法错误的是:( ) B
A. java语言是完全面向对象的 B. java语言支持多继承
C. java语言支持多线程 D. java语言最早是为消费电子产品领域设计的
2.下面标识符中正确的是:( )D
A. *123 B. 12java C. continue D. java$next
3.下列关于注释语句的描述中,正确的一项是( )C
A.以//开始的是多行注释语句
B.以/*开始,*/结束的是单行注释语句
C.以/**开始,*/结束的是可以用于生成帮助文档的注释语句
D.以/**开始,*/结束的是单行注释语句
4.为了区分重载多态中同名的不同方法,要求( )。A
A.形式参数个数或者类型不同 B.返回值类型不同
C.调用时用类名或对象名做前缀 D.形式参数名称不同
5.下面定义数组的格式中正确的是:( )C
A. int a[10] B. int a=new int[10] C. int []a=new int[5] D. int a[]
6.下面说法中不正确的是:( )C
A.类是对象的抽象,对象是类的实例 B.类是组成java程序的最小的单位
C. java语言支持多继承 D. java一个程序中只能有一个public类
7.定义类时,不可能用到的保留字是( )。A
A. private B. class
C. extends D. implements
8.为 AB 类定义一个公共的构造函数,该方法头的形式为( )D
A. void AB( ) B. public void method( )
C. public method ( ) D. public AB( )
9.下面说法中不正确的是:()A
A. java中一个类只允许实现一个接口 B. 抽象类中允许有非抽象方法的存在
C.类变量(实例变量)可以直接用类名调用 D. 通过super可以调用基类的构造函数
10.哪一个输出-4.0 ? ( ) C
A. System.out.println(Math.floor(-4.7)); B. System.out.println(Math.round(-4.7));
C. System.out.println(Math.ceil (-4.7)); D. System.out.println(Math.min(-4.7));
11.以下哪个表达式是不合法的:( )B
A. String x=”Hello”; int y=9; x+=y;
B. String x=”Hello”; int y=9; if(x= =y) { }
C. String x=”Hello”; int y=9; x=x+y;
D. String x=null; int y=(x!=null)&&(x.length()>0)
12.class person{
public int addvalue(int a,int b) {
int s;
s=a+b;
return s;
}
}
class child extends parent{
}
若要在child类中对addvalue方法进行重写,下面对于child类中的addvalue方法头的描述哪个是正确的:( )A
A. int addvalue(int I,int j) B. void addvalue()
C. void addvalue(double i) D. int addvalue(int a)
13.下面程序在fun()方法当出现数组下标超过界限的情况下的输出结果是:( )C
public void test(){
try{
fun();
System.out.print(“情况1”);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.print(“情况2”);
}
catch(Exception e){
System.out.print(“情况3”);
}
finally{
System.out.print(“finally”);
}
}
A.情况1 B.情况2 C.情况2finally D.情况3finally
14、哪二种声明防止方法覆盖?( ) A C
A、final void methoda() {}
B、void final methoda() {}
C、static final void methoda() {}
D、final abstract void methoda() {}
15.编译下例代码哪些没有错误? ( ) B C
A. import java.awt.*; B. package Mypackage;
package Mypackage; import java.awt.*;
class Myclass{} class Myclass{}
C. /* This is a comment */ D.//This is a comment//
package Mypackage; import java.*;
import java.awt.*; package Mypackage;
class Mycalss{} class Myclass()
16. 编译和执行下例代码会输出什么? ( ) C
public class Q
public static void main(String argv[]){
int anar[]=new int[5];
System.out.println(anar[0]);
}
}
A. Eror:anar is referenced before it is initialized B. null C. 0 D. 5
17. 编译和执行下例代码会输出什么?( ) C
abstract class MineBase {
abstract void amethod();
static int i;
}
public class Mine extends MineBase {
public static void main(String argv[]){
int[] ar=new int[5]
for(i=0;i<ar.length;i++)
system.out.println(ar[i]);
}
}
A. a sequence of 5 0’s will be printed B. Error:ar is used before it is initialized
C. Error Mine must be declared abstract D. IndexOutOfBoundes Error
18.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?( ) B
A. ArrayList myList=new Object(); B. List myList=new ArrayList();
C. ArrayList myList=new List(); D. List myList=new List();
19.指出下列程序运行的结果: ( ) B
public class Example{
String str=new String("good");
char[]ch={'a','b','c'};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
Sytem.out.print(ex.ch);
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
}
A. good and abc B. good and gbc C. test ok and abc D. test ok and gbc
20.给出下面代码: C
public class Person{
static int arr[] = new int[10];
public static void main(String a[]) {
System.out.println(arr[1]);
}
}
那个语句是正确的? ( )
A. 编译时将产生错误; B. 编译时正确,运行时将产生错误; C. 输出零; D. 输出空
二、判断题(每小题1分,共10分)
( T ) 1、Java可以用来进行多媒体及网络编程。
( F ) 2、类的public类型的成员变量不可以被继承。
( F ) 3、用final修饰的类必须被继承。
( F ) 4、子类可以继承父类所有的成员变量及成员函数。
( T ) 5、Java编译器使用文件系统来保存程序包。
( F ) 6、Java类中不能存在同名的两个成员函数。
( T ) 7、可以用new来创建一个类的实例,即“对象”。
( T ) 8、接口是特殊的抽象类。
( T ) 9、封装的原则是用公有的方法访问私有的数据。
( F ) 10、Java中类的构造函数只能有一个。
三、程序理解题(共20分)
1、指出下面代码的错误:(2分)
for(i=0;i<10;i++)
{
int sum;
sum=sum+i;
}
System.out.println(“sum is:”+ sum);
_____________________________
2、写出程序运行的结果:(2分)
Class CastDemo{
public static void main(String arg[]){
double x,y;
byte b;
int I;
x=10.0
y=3.0;
i=(int) (x/y);
System.out.println(“Integer outcome of x/y: ”+i);
i=257;
b=(byte) i;
System.out.println(“Value of b: ”+b);
}
}
运行结果:___ Integer outcome of x/y: 3_____ Value of b: 1____________
3、本程序计算的是幂为2 的指数从0到9 的整数值,把程序补充完整。(2分)
class power{
public static void main(String arg[]){
int e,result;
for(int i=0;i<10;1++){
result=1;
____e=i_____________;
while(e>0){
result*=2;
___e--______________
}
System.out.println(“2 的”+i+”方是”+result);
}
}
}
4、本程序是找数组中的最大值和最小值,把程序补充完整。(2分)
class MinMax{
public static void main(String arg[]){
int nums[] = ______ new int[10]___ ____;
int min,max;
nums[]={99,11,18,-3,88,93,1298,-28,74,11};
_____ min=max=nums[0]____________________;
for(int i=1;i<10;i++){
if(nums[i]<min) min=nums[i];
if(nums[i]>max) max=nums[i];
}
System.out.println(“min and max: ”+min +” ”+max);
}
}
5、写出程序运行的结果:(2分)
class Test{
public static void main(String arg[]){
int s=0,i=1;
while(i<=20){
try{
if(i%5!=0){
i++;
continue;
}
s=s+i;
}finally{
i=i+2;
}
}
System.out.println(“ s= ”+s);
}
}
运行结果:_________45________________
6、在空行处写上合适的异常对象。(3分)
public class Try2 {
public static void main (String args[]) {
int i=0;
int a[] = {5,6,7,8};
for(i=0;i<5;i++) {
try {
System.out.print("a["+i+"]/"+i+"="+(a[i]/i));//本语句可能会出现数组下标、除数为零或其他未知异常
}
catch(__ArrayIndexOutOfBoundsException e __________) {
System.out.print("捕获数组下标越界异常!");
}
catch(____ArithmaticsException e____________________) {
System.out.print("捕获算术异常!");
}
catch(_________Exception e_____________________) {
System.out.print("捕获"+e.getMessage()+"异常!"); //显示异常信息
}
finally {
System.out.println(" i="+i);
}
}
System.out.println("继续!");
}
}
7、本程序是无参数交换两个变量的值。(7分)
class Test{
int a,b;
Test(int i,int j){
a=i;
b=j;
}
Void change(Test T){
____T.b=T.a+T.b___________
____T.a=T.b-T.a___________
____T.b=T.b-T.a___________
}
public _____ static void main _____________ (String args[])
{
Test T=new Test(30,38);
System.out.println(“原始值:”+___T.a+” ”_T.b____________);
___T.change(T)__________________________________;
System.out.println(“交换后:”+____ T.a+” ”_T.b ____________);
}
}
四、简答题(共10分)
1、String s = new String("xyz");创建了几个String Object? (2分)
2、解释面向对象语言的几个特征:抽象、继承、封装、多态性。(2分)
3、撰写具有两个(重载)构造函数的test类,并在第一个构造函数内通过this调用第二个构造函数。(2分)
4、final, finally, finalize的区别。Overload和Override的区别。(4分)
五、编程题(共20分)
1、编写一个Applet应用程序,输出字符串“国庆节快乐!”。 (5分)
2、写出一个Point(点)类,该类具有x,y(表示点的横、纵坐标)两个属性,并定义两个构造方法,一个无参数,将x,y均设置为0,另一对坐标值为参数,设置x,y为给定坐标值。该类的show方法输出该点的坐标值。(7分)
class Point{
Int x,y;
Point(){}
Point (int x,int y){}
Point show(){}
}
3、有矩形类Rectangle,该类有两个成员变量length、width;接口Area中有求面积成员方法area();接口Volume中有求体积成员方法volume();要求定义一个长方体类继承矩形类,实现表面积和体积的计算。程序编写要求:(1)写出矩形类的代码;(2)写出接口的代码;(3)写出长方体类的代码(包括成员变量、构造方法及表面积和体积的计算方法)。(8分)
class Rectangle{
int length,width;
}
interface Area(){
abstract double area(){}
abstract double volume(){}
}
class cube extends Rectangle{
double area(){}
double volume(){}
public static void main(String args[]){}
}
)