搜档网
当前位置:搜档网 › Java复习题及答案

Java复习题及答案

Java复习题及答案
Java复习题及答案

第一题单项选择题

1、在下列说法中,选出最正确的一项是(A )。

A、Java语言是以类为程序的基本单位的

B、Java语言是不区分大小写的

C、多行注释语句必须以//开始

D、在Java语言中,类的源文件名和该类名可以不相同

2、下列选项中不属于Java虚拟机的执行特点的一项是(D )。

A、异常处理

B、多线程

C、动态链接

D、简单易学

3、下列选项中,属丁JVM执行过程中的特点的一项是( C )。

A、编译执行

B、多进程

C、异常处理

D、静态链接

4、在Java语言中,那一个是最基本的元素?( C )

A、方法

B、包

C、对象

D、接口

5、如果有2个类A和B,A类基于B类,则下列描述中正确的一个是( B )。

A、这2个类都是子类或者超类

B、A是B超类的子类

C、B是A超类的子类

D、这2个类郡是对方的子类

6、使用如下哪个保留字可以使只有在定义该类的包中的其他类才能访问该类?(D )

A、abstract

B、private (本类)

C、protected(本包及其他包的子类)

D、不使用保留字

7、编译一个定义了3个类的Java源文件后,会产生多少个字符码文件,扩展名是什么?(D )

A、13个字节码文件,扩展名是.class

B、1个字节码文件,扩展名是.class

C、3个字节码文件,扩展名是.java

D、3个字节码文件,扩展名是.class

8、下列关于Java程序结构的描述中,不正确的一项是( C )。

A、一个Java源文件中可以包括一个package语句

B、一个Java源文件中可以包括多个类定义,但是只能有一个public类

C、一个Java源文件中可以有多个public类

D、源文件名与程序类名必须一致

9、下列说法正确的一项是( C )。

A、java.1ang.Integer是接口

B、java.1ang.Runnable是类

C、Doulble对象在iava.1ang包中

D、Double对象在java.1ang.Object包中

10、以下关于面向对象概念的描述中,不正确的一项是( B )。

A、在现实生活中,对象是指客观世界的实体

B、程序中的对象就是现实生活中的对象

C、在程序对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)

D、在程序中,对象是一组变量和相关方法的集合

11、Java语言最初是面向哪个应用领域设计的?( C )

A、Internet

B、制造业

C、消费电子产品

D、CAD

12、下列选项中,不属于JDK文件目录中的子目录的是( C )。

A、bin子目录

B、include子目录

C、j2sdkl.4.2子目录

D、lib子目录

13、下列选项中,不属于java核心包的一项是( A )。

A、javax.swing

B、java.io

C、java.util

D、java.1ang

14、下列关于注释语句的描述中,正确的一项是(C )。

A、以//开始的是多行注释语句(单行)

B、以/*开始,*/结束的是单行注释语句(多行)

C、以/**开始,*/结束的是可以用于生成帮助文档的注释语句

D、以/**开始,*/结束的是单行注释语句

15、定义类时,不可能用到的保留字是( D)。

A、private

B、class

C、extends

D、以上均可

16、下列关于类和对象的描述中,不正确的一项是( D )。

A、现实世界中,可以把每件事物都看做是一个对象

B、一组对象构成一个程序,对象之间通过发消息通知彼此该做什么

C、有共同属性的对象可以抽象为一个类

D、一个类只能实例化一个对象

17、下列说法中,不正确的一项是( B )。

A、Java程序有两类:Application和Applet

B、类的方法只能由public修饰

C、面向对象的程序设计的优点有:可重用性、可扩展性、可管理性

D、Java语言通过接口支持多重继承

18、java语言的类间的继承关系是( B )。

A、多重的

B、单重的

C、线程的

D、不能继承

19、下列哪个不是面向对象程序设计方法的特点?( D )

A、抽象

B、继承

C、多态

D、结构化

20、下列描述中不正确的一项是( D )。

A、Java是纯面向对象语言,不兼容以往的任何语言

B、c++不是纯面向对象的,它兼容c语言

C、在Java语言中,使用对象时必须先声明

D、Java语言和c++一样有指针

21、以下的选项中能正确表示Java语言中的一个整型常量的是( A)。

A、435

B、-0X34

C、34,000

D、4 5 6

22、下列语句中,正确的给出初始值为222.111的单精度浮点数f的定义的一个是(A )。

A、float f=222.111f:

B、float f=222.111;

C、float f=222.111 d:

D、float f=‘222.111’;

23、下列关于byte类型的说法中,正确的一个是( A )。

A、byte类型的长度为8位

B、byte类型可以自动转换为所有的简单类型

C、128是合法的byte类型数值

D、byte存储顺序是从高到低

24、下列标识符中,正确的是( B )。

A、1_Back

B、$_Money

C、$-money

D、2-Foward

25、设有类型定义short i=32;long j=64;下面赋值语句中不正确的一个是( B )。

A、j=i;

B、i=j;

C、i=(short)j;

D、j=(long)i;

26、以下字符常量中不合法的一个是( A )。

A、?a\n?

B、?\r?(回车)

C、?\t?(水平制表)

D、?¥?

27、下列数据表示十六进制数的一个是(D)。

A、02l

B、123

C、?23?

D、0xa34

28、下列关于类型转换的说法中,正确的一项是(D )。

A、double类型可以自动转换为int类型

B、double类型只能强制转换为int和long类型

C、double类型可以通过强制转换为boolean类型

D、double不可以自动转换为int类型

29、设有定义int a=12;则执行以下语句后,a的值为(A )。

a*=12;

A、144

B、12

C、24

D、0

30、下列语句序列执行后,x的值是(B)。

public class ex3{

public static void main(String[ ]args){

int a=2;

int b=3;

int x=4;

x=++a*x;

System.out.println(x);

A、l3

B、12

C、11

D、10

31、执行如下语句之后,输出的结果是(D)。

public class ex6{

public static void main(String[ ]args){

int x= -6,Y=6;

x=x+Y- -;

System.out.println(x);

}

}

A、12

B、一12

C、一1

D、0

32、设有定义int x= …A?;,则执行下列语句之后,x的值为( A )。

x%= …A?:

A、0

B、…A?

C、…a?

D、65

33、设i、j为int类型变量,a为float类型变量,以下选项中,正确的赋值语句是(B)。

A、i=i+2

B、a=7;

C、i++一一j;

D、a=66.0;

34、对于一个二位的十进制正整数x,求它的十位数字Y(Y为整型)的表达式是(D )。

A、Y=x—x/10%10

B、Y=(x—x/10*10)%10

C、Y=x%10

D、Y=x/10

35、下列语句序列执行后,输出的结果是( A)。

public class exl7{

public static void main(String[ ]args){

int x=15;

x/=x%5+x*(x—x%10);

System.out.println(x);

}

}

A、0

B、5

C、10

D、15

36、执行下列代码之后,输出的结果为( B)。

public class ex24{

public static void main(String[ ]args){

int a=2;

int b=3;

int c=7;

int d=a>c?a:c;

d=d>>2>b?d:b;

System.out.println(b);

}

}

A、2

B、3

C、5

D、7

37、为了定义3个整型数组a1、a2、aL3,下面声明正确的语句是( B )。

A、intArray[ ]a1,a2;

B、int[ ]a1,a2;

int a3[ ]={1,2,3,4,5 h int a3[ ]={1,2,3,4,5};

C、int a1,a2[ ];

D、int[ ]a1,a2;

int aL3:{1,2,3,4,5};int a3=(1,2,3,4,5);

38、在使用interface声明一个接口时,只可以使用哪一个修饰符修饰该接口?"( D )

A、pIivate

B、protected

C、private protected

D、public

39、若有定义:byte[ ]x={11,22,33,一66};其中0≤k≤3,则对x数组元素错误的引用是(C )。

A、x[5—3 ]

B、x[k]

C、x[k+5]

D、x[0]

40、main()方法是Java Application程序执行的入口点,关于main()方法的方法头下面哪一项合法( B )

A、public static void main(String args )

B、public static void main(String args[ ])

C、public static int main(Stnng[ ]arg)

D、public Void main(Stnng arg[ ])

41、若需要定义一个静态域,应使用哪一个修饰符?(A)

A、static

B、synchronized

C、private

D、protected

42、下列方法中哪一个不能用于获取异常信息( C )?

A、toString ( )

B、getMessage( )

C、drawline( )

D、printStackTrace()

43、下列描述中,哪一项不属于finally语句应陔执行的功能( C )?

A、释放资源

B、关闭文件

C、分配资源

D、关闭数据库

44、下列关于RuntimeException的说法中正确的一个项( D )。

A、此异常默认可以被除了main( )方法之外的任何方法抛出

B、它没有被强迫处理,因此也不会被main( )处理

C、这种异常属于检测异常

D、从jdk的docs可以了解都有哪些异常属于此类

45、下列关于异常处理原则的说法中错误的一项是(D )。

A、修正问题,并再次调用引发异常的方法

B、暂时解决问题,不再尝试执行该方法,转而继续程序的执行

C、用一个可替代的结果替换方法本来应该得出的值

D、进行一些工作,然后把同一异常重掷到较低层

46、编写AWT图形用户程序的时候,一定要import的语句是( B )。

A、import java.awt;

B、import java.awt.*;

C、import javax.awt.*;

D、import javax.swing.*;

47、下列不属于java.awt包中的基本概念的一项是( C )。

A、容器

B、构件

C、线程

D、布局管理器

48、下列哪一项不是Applet的生命周期方法?(B)

A、start()

B、getCodeBase()

C、destroy()

D、init()

49、下列说法中错误的一项是(A )。

A、Applet必须全部重写其生命周期方法

B、Applet不必全部重写其生命周期方法

C、Applet中使用了线程,则需要重写相应的生命周期方法

D、stop( )总是在destroy( )之前被调用。

50、下列哪一项不属于Applet中的显示方法?(A)

A、update()

B、repaint()

C、drawLine()

D、paint()

第二题填空题

1、Java程序可以分为2大类:___ Application ___和_ Applet ____。

2、class类是一个特殊类,它在编译时由___ _编译器_____自动生成,并伴随每一个类。

3、每个Java Application程序可以包括许多方法,但是必须有且只能有一个__ _ main( )____方法,统一格式为_ ___ public static void main(String arg[ ]) _________,它是程序执行的入口。

4、程序设计语言分为三类,分别是面向机器的语言,面向__过程_____的语言和面向__ 对象____的语言,Java语言是面向_对象____的语言。

5、Java源程序文件和字节码文件的扩展名分别为__ java ____和_____ class ________。

6、如果在Java程序中,需要使用java.util包中的所有类,则应该在程序开始处加上_import java.util.*语句。

7、在Java语言中,由/**开始,以*/结束的注释语句可以用于生成帮助文档。

8、一般Java程序的类体由两部分组成:一部分是成员变量_,另一部分是_ 成员方法__。

9、Java语言的类型检查机制要求对于没有返回值的方法,在其前面必须加_ void __进行说明。

10、数据类型为布尔型的保留字是__ boolean 。

11、Java 中的字符使用的是16位的____ Unicode _____编码。

12、字符串“\’a\’”的长度是____ ___3 ____。

13、在不产生溢出的情况下左移运算相当于__ 乘法___运算。

14、__ 关系运算符__一般可以和布尔逻辑运算符相结合,用于流程控制语句的判断条件。

15、表达式(3 !=0)//(3.0/0.0<=2.0)的值为__ true ___。

16、按照操作数的个数分类,关系运算符<=属于___ 二元运算符____。

17、算术右移一位相当于_ 除2取商____算术运算。

18、在对一个复杂表达式进行运算时,按照运算符的优先级次序进行,若是同级运算符,则按照其在表达

式中的位置__ 由左到右______的顺序进行。

19、假设i=10,j=20,k=30,则表达式!(i

20、表达式7/6*5的计算结果是___5 ___。

21、在Java语言中,用来分配内存的运算符是___ new____。

22、关系表达式由两个操作数和___关系运算符_ ____构成。

23、在Java语言中,保留字instanceof是____ 实例___运算符。

24、表达式12 !=12的值为___ false ____。

25、在比较两个对象的值是否相同时,可以调用___ equals()____方法。

26、在循环语句中,反复执行的单一语句或者复合语句被统一称做循环语句的___ 循环体_____部分。

27、____continue____ 语句的t要功能包括:跳过循环体内部下面未执行的语句,回到循环体开始位置,

继续下次循环。

28、循环语句包括for循环、___while循环___和___do-while循环____。

29、___return_ _ 语句的功能是从当前方法中退出,返回到调用该方法的地方继续执行下面的语句。

30、递归方法虽然可以使程序简洁,但是随着递归层次的___ 增加_______,占用系统的内存也会增加。

31、______final ___ 方法是不能被当前类的子类重新定义的方法。

32、当子类的成员变量与父类的成员变量名字相同时,子类的成员变量会__ 隐藏_______父类的成员变量。

33、顺序执行下面两个语句,输出的结果是:__ 6__。

String s= “Hello!”;

System.out.println(S.1ength( ));

34、在java个类的内部嵌套定义的类称为___ 内部类________。

35、没有数组定义:int MyIntArray[ ]={10,20,30,40,50,60,70};

则执行F面几个语句后的输出结果是___ 280 ____。

int s=0;

for(int i=0; i

s+=MyIntArray[i];

System.out.println(S);

36、抽象类不能_____ 实例化___________。

37、可以通过__ throw __语句将异常抛出向上级调用方法。

38、异常处理在内存中采用_ 堆栈____机制。

39、在Java编程语言中,用_ try __, catch ___,__ finally ___语句来处理异常。

40、Java语言的异常处理机制中__ catch ___子句或_ finally___子句可省略,但二者不能同时省略。

41、若抛出的异常类的对象不在catch之列,或者catch子句中包含__ 异常对象___语句,则执行finally

子句中的代码之后返_ 异常处理___。

43、线程的生命周期包括新建状态、可运行状态、运行状态。

第三题简答题

1. 简述Java语言实现平台无关(跨平台)性的原理。

Java程序实际是在Java虚拟机(JRE是软件实现)中运行,Java虚拟机类似一个模拟执行环境,在不同的操作系统上拥有不同的Java虚拟机实现,但是这些Java虚拟机遵循统一的规范来解释class文件,并将class文件中的指令转换为本地操作系统对应的指令,这样就实现了相同的class文件,可以通过Java虚拟机转换为对应操作系统上的对应指令,实现class文件,也就是Java程序的跨平台性。

2. 简述什么是java异常,分哪几类,如何处理?

异常是程序运行过程中出现的错误。

在Java中主要有二类异常。

(1)Error表示很难恢复的错误,如内存越界。一般不期望用户程序来处理,即使程序员有能力处理这种错误,也还是交给系统处理为好。

(2)Exception用来表示设计或实现方面的问题,如数组越界等。因为设计和实现正确的程序不会引发这类异常,所以常常不处理它。发生这类异常时,运行时环境会输出一条信息,提示用户修正错误。

处理异常常用代码:try{ //(尝试运行的)程序代码

}catch(异常类型异常的变量名){ //异常处理代码

}finally{ //结束处理}

3. 说明Java语言中三种注释的语法格式,以及用途。

单行注释语法格式:// 适用于程序中简单的说明

多行注释语法格式:/* */ 适用于程序中比较复杂的程序逻辑的说明

文档注释语法格式:/** */ 适用于程序中整体结构的注释,用于生成程序类结构文档4.什么是JDBC、ODBC、JDBC-ODBC?

JDBC(Java Data Base Connectivity,java数据库连接)是sun公司的一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯Java API 编写数据库应用程序。

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开发的有关数据库的API,它建立了

一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

由于微软的数据库不是用Java语言来编写的,但是我们需要用java语言连接微软的数据库,这样就要编写一个桥连接,使java语言编写的代码也可以操作数据库。JDBC-ODBC这个桥连接就可以实现。

第四题、编程题

1.编写一个输出"Hello World!"的程序,用两种方式实现(Application、Applet)。

1)Application 实现

public class HelloWorld

{

public static void main(String args[])

{

System.out.println("Hello,World!");

}

}

2)Applet实现

import java.awt.Graphics;

import java.applet.Applet;

public class HelloWorld extends Applet{

String s;

public void init(){

s="Hello World!";

}

public void paint(Graphics g){

g.drawString(s,25,25);

}

}

2、计算1/1+1/2+1/3+...+1/100 的值

public class Sum

{ public static void main( String args[ ])

{ double sum = 0.0 ;

for ( int i = 1 ; i <= 100 ; i + + )

sum += 1.0/(double) i ;

System.out.println( "sum="+sum );

}

}

3、从标准输入(键盘)读入10个整数存入整型数组a中,然后逆序输出这10个整数

import java.io.* ;

public class Reverse

{ public static void main(String args[ ])

{ int i , n =10 ;

int a[ ] = new int[10];

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( );

}

}

4、写出下列程序运行结果

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.length ; i ++ )

if ( a[i]%3 = = 0 ) s += a[i] ;

System.out.println("s="+s);

} }

答:s = 180

5.public class ABC

{

public static void main(String args[ ]){

int i , j ;

int a[ ] = { 12,67,8,98,23,56,124,55,99,100 };

for ( i = 0 ; i < a.length-1; i ++ ) {

int k = i;

for ( j = i ; j < a.length ; j++ )

if ( a[j]

int temp =a[i];

a[i] = a[k];

a[k] = temp;

}

for ( i =0 ; i

System.out.print(a[i]+" ");

System.out.println( );

}

}

答:使用选择法对数组a的数据进行升序排序,然后输出排序后的结果。

import java.io.*;

import java.util.*;

public class A

{

public static void main(String[] args) throws NumberFormatException, IOException {

int[] num=new int[10];

BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); for(int i=0;i<10;i++)

{

System.out.println("请输入第"+(i+1)+"个数:");

int temp=Integer.parseInt(br.readLine());

num[i]=temp;

}

Arrays.sort(num);

for(int i=num.length-1;i>=0;i--)

{

System.out.print(num[i]+" ");

}

}

}

相关主题