搜档网
当前位置:搜档网 › JAVA复习题

JAVA复习题

JAVA复习题
JAVA复习题

面向对象程序设计—Java语言习题

第1章概述

一、选择题

1.下列选项中,不属于Java语言特点的一项是(c )。

(A)分布式(B)安全性

(C)编译执行(D)面向对象

2.在Java语言中,(c )是最基本的元素?

(A)方法(B)包

(C)对象(D)接口

3.编译一个定义了3个类和10个方法的Java源文件后,会产生()个字节码文件?扩展名是(d )?

(A)13个字节码文件,扩展名为.class (B)1个字节码文件,扩展名为.class (C)3个字节码文件,扩展名为.java (D)3个字节码文件,扩展名为.class 5.Java语言属于(b)种语言?

(A)面向机器的语言(B)面向对象的语言

(C)面向过程的语言(D)面向操作系统的语言

7.下列选项中,不属于Java核心包的一项是a)。

(A)javax.swing (B)java.io

(C)java.util (D)https://www.sodocs.net/doc/4c6438655.html,ng

8.下列描述中,不正确的是(a )。

(A)不支持多线程(B)一个Java源文件不允许有多个公共类

(C)Java通过接口支持多重继承(D)Java程序分为Application和Applet两类

9.阅读下列代码,选出该代码段正确的文件名(c )。

class A{

void method1(){

System.out.println("Method1 in class A");

}

}

public class B{

void method2(){

System.out.println("Method2 in class B");

}

public static void main(String[] args){

System.out.println("main() in class B");

}

}

(A)A.java (B)A.class

(C)B.java (D)B.class

10.编译下面源程序会得到哪些文件(d )?

class A1{

}

class A2{

}

public class B{

public static void main(String[] args){

}

}

(A)只有B.class文件(B)只有A1.class和A2.class文件

(C)编译不成功(D)A1.class、A2.class和B.class文件

二、填空题

1.Java程序的编译和执行模式包括2点,是半编译和半解释。

2.Java语言支持tcp/ip 协议,从而使得Java程序在分布式环境中能够很方便地访问处于不同地点的对象。

3.开发Java程序的一般步骤是:源程序编辑、结码和解释执行。

4.每个Java Application程序可以包括许多方法,但是必须有且只能有一个main() 方法,统一格式为public static void main(String[] args) ,它是程序执行的入口。5.JVM把字节码程序与各种不同的操作系统和文件分开,使得Java程序独立于平台。

6.Java源程序文件和字节码文件的扩展名分别为.java 和 .class 。

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

三、编程题

1.编写一个Java Application类型的程序,输出“This is my first Java Application!”。

第2章数据类型、运算符和表达式

一、选择题

1.下列(d )是合法的标识符?

(A)12class (B)void (C)-5 (D)blank

2.下列(b )不是Java中的保留字?

(A)if (B)sizeof (C)private (D)null

3.下列(c )不是合法的标识符?

(A)$million (B)$ million (C)2$ million (D)$2 million 4.下列选项中,(b )不属于Java语言的基本数据类型?

(A)整数型(B)数组(C)浮点型(D)字符型

5.下列关于基本数据类型的说法中,不正确的一项是(d )。

(A)boolean类型变量的值只能取真或假

(B)float是带符号的32位浮点数

(C)double是带符号的64位浮点数

(D)char是8位Unicode字符

6.下列关于基本数据类型的取值范围的描述中,正确的一个是(b )。

(A)byte类型的取值范围是-128~128 (B)boolean类型的取值范围是真或假(C)char类型的取值范围是0~65536 (D)short类型的取值范围是-32767~32767

7.下列关于Java语言简单数据类型的说法中,正确的一项是(a )。

(A)以0开头的整数代表8进制整型常量

(B)以0x或0X开头的整数代表8进制整型常量

(C)boolean类型的数据作为类成员变量的时候,相同默认的初始值为true

(D)double类型的数据占计算机存储的32位

8.下列Java语句中,不正确的一项是(c )。

(A)int $e, a, b = 10; (B)char c, d = …a?;

(C)float e = 0.0d; (D)double c = 0.0f;

9.在编写Java程序时,如果不为类的成员变量定义初始值,Java会给出它们的默认值,下列说法中不正确的一个是(d )。

(A)byte的默认值是0 (B)boolean的默认值是false

(C)char类型的默认值是?\0?(D)long类型的默认值是0.0L

10.下列语句中不正确的一个是(b )。

(A)float f = 1.1f; (B)byte b = 128;

(C)double d = 1.1/0.0; (D)char c = (char)1.1f;

11.下列表达式1+2+ "aa"+3的值是(b )。

(A)"12aa3" (B)"3aa3 " (C)"12aa" (D)"aa3"

12.已知y=2, z=3, n=4,则经过n=n+ -y*z/n运算后n的值为(a )。

(A)3 (B)-1 (C)-12 (D)-3

13.已知a=2, b=3,则表达式a%b*4%b的值为(a )。

(A)2 (B)1 (C)-1 (D)-2

14.已知x=2, y=3, z=4,则经过z- = --y – x--运算后,z的值为(d )。

(A)1 (B)2 (C)3 (D)4

15.表达式(12==0) && (1/0 < 1)的值为(b )。

(A)true (B)false (C)0 (D)运行时抛出异常

16.设有类型定义short i=32; long j=64; 下面赋值语句中不正确的一个是(b )(A)j=i; (B)i=j; (C)i=(short)j; (D)j=(long)i;

17.现有1个char类型的变量c1=66和1个整型变量i=2,当执行c1=c1+(char)i;语句后,c1的值为(d )。

(A)'d' (B)'D' (C)68 (D)语句在编译时出错

18.下列说法中,正确的一项是(d )。

(A)字符串"\\abcd" 的长度为6 (B)False是Java的保留字

(C)123.45L代表单精度浮点型(D)False是合法的Java标识符

19.以下的变量定义语句中,合法的是(d )

(A)float *5 = 123.456F; (B)byte $ b1 = 12345;

(C)int long = 123456L; (D)double d = Double.MAX V ALUE; 20.下列关于运算符优先级的说法中,不正确的一个是(c )

(A)运算符按照优先级顺序表进行运算

(B)同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的

(C)同一优先级的运算符在表达式中都是按照从右到左的顺序进行运算的

(D)括号可以改变运算的优先次序

二、填空题

1.变量是Java程序的基本存储单元之一,变量的主要类型包括2大类:整型和字符型。

2.Java语言的整数类型变量和常量一样,各自都包括4种类型的数据,它们分别是byte、int 、short 和long。

3

4.在Java

用的存储空间为 1 位。

5.Java语言中的保留字具有特殊意义和作用,不能作为普通标识符使用。

6.在Java语言中,浮点类型数据属于实型数据,可以分为单精度和双精度两种。7.char类型的数据可以表示的字符数共为65536 。

8.定义初始值为10的8次方的常整型变量iLong的语句是final iLong=1000000L 。

9.Java语言中的数据类型转换包括自动转换和强制转换两种。10.Java中的字符采用的是16位的Unicode 编码。

11.数据类型中存储空间均为64位的两种数据类型是long 和double 。12.表达式9*4/ -5%5的值为-2 。(十进制表示)

13.表达式5&2的值为0 。(十进制表示)

14.表达式42<<4的值为672 。(十进制表示)

15.表达式11010011>>>3的值为11010 。(二进制表示)

16.表达式7|3的值为7 。(十进制表示)

17.表达式10^2的值为8 。(十进制表示)

18.Java语言中的逻辑与(&&)和逻辑或(||)运算采用短路方式进行运算。

19.若a、b为int型变量,并且已分别赋值为5和10,则表达式(a++)+(++b)+a*b的值为82 。

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

三、编程题

1.编写一个Java Application类型的程序,定义一个byte类型的变量b,并从键盘上给它赋值为-100和100时,输出该变量的值。

【编程分析】要实现键盘输入一个byte类型的变量,首先创建输入流对象,再利用该对象的readLine()方法输入字符串,然后利用Byte类的parseByte()方法将输入的字符串转化为字节类型,最后通过System.out.println()方法输出该变量。

【参考程序】

import java.io.*;

public class X2 3 1 {

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

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

byte b ;

String str = br.readLine();

b = Byte.parseByte(str);

System.out.println(b);

str = br.readLine();

b = Byte.parseByte(str);

System.out.println(b);

}

}

【运行结果】

-200

Exception in thread "main" https://www.sodocs.net/doc/4c6438655.html,ng.NumberFormatException

at https://www.sodocs.net/doc/4c6438655.html,ng.Byte.parseByte(Byte.java:124)

at https://www.sodocs.net/doc/4c6438655.html,ng.Byte.parseByte(Byte.java:79)

at EX11 1.main(EX11 1.java:8)

注意:给b赋值的范围只能在-128至127之间,如果超出这个范围,则发生例外。

2.编写一个Java Application类型的程序,从键盘上输入三角形的三条边的长度,计算三角形的面积并输出。根据三角形边长求面积公式如下:

s

s

area-

=

a

-

-

(*)

)

(*)

(*c

b

s

s

,其中a、b、c为三角形的三条边,s=(a+b+c)/2。

【编程分析】该程序由于涉及到数据输入,因此首先建立输入流对象,输入三角形三条边a、b、c的值,然后求出中间变量s的值,最后利用数学方法Math.sqrt()方法求出三角形的面积并输出。

【参考程序】

import java.io.*;

public class X2 3 3 {

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

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

double a, b, c, s, area;

String str;

str = br.readLine();

a = Double.parseDouble(str);

str = br.readLine();

b = Double.parseDouble(str);

str = br.readLine();

c = Double.parseDouble(str);

s = (a+b+c)/2.0;

area = Math.sqrt(s*(s-a)*(s-b)*(s-c));

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

}

}

【运行结果】

3

4

5

area = 6.0

注意:输入的三角形的三条边必须满足三角形的构成规则,如果不满足则输出错误结果。

3.编写一个Java Application类型的程序,从键盘上输入摄氏温度C,计算华氏温度F的值并输出。其转换公式如下:

F = (9 / 5) * C + 32

【编程分析】该程序和上一个程序类似,在此不再赘述。

【参考程序】

import java.io.*;

public class X2 3 4 {

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

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

double C, F;

String str;

str = br.readLine();

C = Double.parseDouble(str);

F=(9.0 / 5) * C + 32;

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

}

}

【运行结果】

37

F = 69.0

4.已知圆球的体积公式为4/3 r3,编一程序,输入圆球半径,计算并输出球的体积。【编程分析】该程序和第3题类似,在此不再赘述。

【参考程序】

import java.io.*;

public class X2 3 5 {

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

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

int radius;

double volume;

String str;

System.out.print("Enter the value of radius please: ");

str = br.readLine();

radius = Integer.parseInt(str);

volume=4*Math.PI*Math.pow(radius,3)/3;

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

}

}

【运行结果】

Enter the value of radius please: 26

volume = 73622.176********

第3章流程控制

一、选择题

1.下列(d )不属于Java语言流程控制结构?

(A)分支语句(B)跳转语句(C)循环语句(D)赋值语句2.假设a是int类型的变量,并初始化为1,则下列(d )是合法的条件语句?

(A)if(a){} (B)if(a<<=3){} (C)if(a=2){} (D)if(true){}

3.下列说法中,不正确的一个是(c )。

(A)switch语句的功能可以由if…else if语句来实现

(B)若用于比较的数据类型为double型,则不可以用switch语句来实现

(C)if …else if语句的执行效率总是比switch语句高

(D)case子句中可以有多个语句,并且不需要大括号{}括起来

4.设a、b为long型变量,x、y为float型变量,ch为char类型变量且它们均已被赋值,则下列语句中正确的是(b )。

(A)switch(x+y) {} (B)switch(ch+1) {}

(C)switch ch {} (D)switch(a+b); {}

5.下列循环体执行的次数是( c )。

int y=2, x=4;

while(--x != x/y){ }

(A)1 (B)2 (C)3 (D)4

6.下列循环体执行的次数是( b )。

int x=10, y=30;

do{ y -= x; x++; }while(x++

(A)1 (B)2 (C)3 (D)4

7.已知如下代码:

switch(m){

case 0: System.out.println("Condition 0");

case 1: System.out.println("Condition 1");

case 2: System.out.println("Condition 2");

case 3: System.out.println("Condition 3");break;

default:System.out.println("Other Condition");

}

当m的值为( d )时,输出“Condition 3”

(A)2 (B)0、1 (C)0、1、2 (D)0、1、2、3

二、填空题

1.跳转语句包括break 、continue 、return 和throw。

2.switch语句先计算switch后面的表达式的值,再和各case 语句后的值做比较。3.if语句合法的条件值是boolean 类型。

4.continue语句必须使用于循环语句中。

5.break语句有两种用途:一种从switch 语句的分支中跳出,一种是从循环语句

内部跳出。

6.do -while循环首先执行一遍循环体,而while循环首先判断表达式的值。7.与C++语言不同,Java语言不通过goto 语句实现跳转。

8.每一个else子句都必须和它前面的一个距离它最近的if 子句相对应。

9.在switch语句中,完成一个case语句块后,若没有通过break语句跳出switch语句,则会继续执行后面的case 语句块。

10.在for循环语句中可以声明变量,其作用域是for循环体。

三、编写程序

1.利用if语句,根据下列函数编写一个程序,当键盘输入x值时,求出并输出y的值。

【编程分析】本题主要考查if…else语句的使用。根据给定的数学算式,只要给出x的值,就有对应的y算式,因此利用if…else语句直接可以实现。

【参考程序】

import java.io.*;

public class X3 4 1 {

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

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

int x, y;

x = Integer.parseInt(br.readLine());

if(x<=1) y = x;

else if(x<10) y = 3*x - 2;

else y=4*x;

System.out.println("x = "+x + "\ty = "+y);

}

}

【运行结果】

9

x = 9 y = 25

2.利用switch语句将学生成绩分级,当从键盘中输入学生成绩在100~90范围时,输出“优秀”,在89~80范围时输出“良好”,在79~70范围时输出“中等”,在69~60范围时输出“及格”,在59~0范围时输出“不及格”,在其他范围时输出“成绩输入有误!”。【编程分析】本题主要考查switch语句的使用。由于要根据一定的数值范围来输出相应的汉字,而switch后面的表达式类型不能是一个范围,因此要把一个整数范围变成一个整数来满足要求。由于Java中的int和int运算的结果还是int型,可以把某个给定的程序除10,如89/10和81/10的结果都是8,这样就满足了要求。

【参考程序】

import java.io.*;

public class X3 4 2 {

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

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

int score, k;

score = Integer.parseInt(br.readLine());

if(score>100 || score<0){

System.out.println("输入成绩超出范围!");

System.exit(1);

}

k = score/10;

switch(k){

case 10:

case 9:

System.out.println("优秀");

break;

case 8:

System.out.println("良好");

break;

case 7:

System.out.println("中等");

break;

case 6:

System.out.println("及格");

break;

default:

System.out.println("不及格");

}

}

}

【运行结果】

87

良好

3.利用for循环,计算1+3+7+……+(220-1)的和。

【编程分析】本例主要考查利用for循环求一个数列的和的编程方法。数列的项数和每一项的值都已知,因此直接利用for循环和数学类中的相应方法即可实现。

【参考程序】

public class X3 4 3 {

public static void main(String[] args) {

int i, sum=0;

for(i=1; i<21; i++)

sum += Math.pow(2,i) - 1;

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

}

}

【运行结果】

sum = 2097130

4.已知n

n S 1114131211--++-+-= ,利用while 循环编程求解n=100时的S 值。 【编程分析】本例主要考查利用while 循环实现对一个数列进行加、减运算的编程方法。由于项数已经确定,因此数列的首项和末项已知,但是由于加减交替出现,可以利用一个变量sign 来确定符号,设sign 初始值为1,循环一次让它变一次符号,从而实现符号的交替变化。

【参考程序】 public class X3 4 4 {

public static void main(String[] args) {

int i=1, n = 100;

double sign = 1, sum = 0;

while(i<=n){

double k = sign/i;

sum += k;

i++;

sign = -sign;

}

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

}

}

【运行结果】

S = 0.688172179310195

5.利用do …while 循环,计算1!+2!+3! +……+100!的和。

【编程分析】本例主要考查利用do …while 循环实现数列相加的程序设计方法。由于每一项都是一个阶乘,所以在循环过程中先求阶乘,然后再相加。

【参考程序】 public class X3 4 5 {

public static void main(String[] args) {

int i=1;

long fact = 1, sum = 0;

do{

fact *= i;

sum += fact;

i++;

} while(i<=100) ;

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

}

}

【运行结果】

sum = 1005876315485501977

6.编程序,求∑=1013k k

【编程分析】本例主要考查利用任意一种循环结构实现给定数列求和的程序设计方法。实

现方法和前几例类似,在此不再赘述。

【参考程序】

public class X3 4 6 {

public static void main(String[] args) {

int k, sum = 0;

for(k=1;k<=10;k++)

sum += Math.pow(k,3);

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

}

}

【运行结果】

sum = 3025

第4章数组与字符串

一、选择题

1.给出下面程序代码:

byte[] a1, a2[];

byte a3[][];

byte[][] a4;

下列数组操作语句中哪一个是不正确的?( a )

A.a2 = a1 B.a2 = a3 C.a2 = a4 D.a3 = a4 2.关于数组,下列说法中不正确的是( c )。

A.数组是最简单的复合数据类型,是一系列数据的集合

B.数组元素可以是基本数据类型、对象或其他数组

C.定义数组时必须分配内存

D.一个数组中所有元素都必须具有相同的数据类型

3.设有下列数组定义语句:

int a[] = {1, 2, 3};

则对此语句的叙述错误的是( c )。

A.定义了一个名为a的一维数组B.a数组有3个元素

C.a数组元素的下标为1~3 D.数组中每个元素的类型都是整数4.执行语句:int[] x = new int[20];后,下面哪个说法是正确的?( c )A.x[19]为空B.x[19]未定义C.x[19]为0 D.x[0]为空5.下面代码运行后的输出结果为( a )。

public class X6 1 5 {

public static void main(String[] args) {

AB aa = new AB();

AB bb;

bb = aa;

System.out.println(bb.equals(aa));

}

}

class AB{ int x = 100; }

A.true B.false C.编译错误D.100 6.已知有定义:String s="I love",下面哪个表达式正确?(a )

A.s += "you"; B.char c = s[1];

C.int len = s.length; D.String s = s.toLowerCase();

二、填空题

1.Object类是所有类的直接或间接父类,它在https://www.sodocs.net/doc/4c6438655.html,ng 包中。

2.System类是一个功能强大、非常有用的特殊的类,它提供了标准的输入输出、运行时系统信息等重要工具。这个类不能实例化,即不能创建System类的对象,所以它所有的属性和方法都是static 类型,引用时以类名System为前缀即可。3.数组是一种复合数据类型,在Java中,数组是作为对象来处理的。数组是有限元素的有序集合,数组中的元素具有相同的数据类型,并可用统一的数组名和下标来唯一确定其元素。

4.在数组定义语句中,如果[]在数据类型和变量名之间时,[]之后定义的所有变量都是数组类型,当[]在变量名之后时,只有[]之前的变量是数组类型,之后没有[]的则不是数组类型。

5.数组初始化包括静态初始化和动态初始化两种方式。

6.利用System 类中的arraycopy() 方法可以实现数组元素的复制;利用类中的和方法可以实现对数组元素的排序、查找等操作。

7.Java语言提供了两种具有不同操作方式的字符串类:String 类和StringBuffer 类。

它们都是https://www.sodocs.net/doc/4c6438655.html,ng.Object 的子类。

三、编程题

1.有一个数列,它的第一项为0,第二项为1,以后每一项都是它的前两项之和,试产生该数列的前20项,并按顺序显示出来。

【编程分析】本例由于涉及到20项数据的存储,因此可以利用数组来实现。由于数列的各项之间存在一定的关系,可以利用前两项来计算后面项。

【参考答案】

public class X6 4 1 {

public static void main(String[] args) {

int[] a = new int[20];

a[0]=0;

a[1]=1;

int i;

for(i=2;i<20;i++){

a[i]=a[i-1]+a[i-2]; // 求其余18项

}

for(i=0;i<20;i++){ // 每一行显示5个元素

if(i%5 == 0)

System.out.println();

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

}

System.out.println();

}

}

【运行结果】

0 1 1 2 3

5 8 13 21 34

55 89 144 233 377

610 987 1597 2584 4181

5.从键盘上输入一个字符串,试分别统计出该字符串中所有数字、大写英文字母、小写英文字母以及其他字符的个数并分别输出这些字符。

【编程分析】本题主要考察字符串的输入及字符串方法的应用。

第一步:建立输入流对象,实现从键盘输入字符串。

第二步:利用循环语句及字符串类中的方法charAt(),对输入字符串中的每个字符进行判断,并统计出各类字符的个数。

【参考程序】

import java.io.*;

public class X6 4 5 {

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

InputStreamReader isr= new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

String str = br.readLine();

int i, ditNo=0, upCharNo=0, loCharNo=0, otherCharNo=0;

for(i=0;i

if(str.charAt(i)<='9' && str.charAt(i)>='0')

ditNo++;

else if(str.charAt(i)<='Z' && str.charAt(i)>='A')

upCharNo++;

else if(str.charAt(i)<='z' && str.charAt(i)>='a')

loCharNo++;

else

otherCharNo++;

}

System.out.println("ditNo = "+ditNo+"\t"+"upCharNo = "+upCharNo);

System.out.println("loCharNo="+loCharNo+"\t"+"otherCharNo = "+otherCharNo);

}

}

【运行结果】

abcABCDE1234<>>

ditNo = 5 upCharNo = 6

loCharNo = 4 otherCharNo = 7

6.从键盘上输入一个字符串,利用字符串类提供的方法将大写字母转变为小写字母,小写字母转变为大写字母,再将前后字符对换,然后输出最后结果。

【编程分析】本题主要考察StringBuffer类及其方法的应用。

第一步:创建输入流对象。

第二步:创建StringBuffer类对象。

第三步:利用StringBuffer类中的方法,实现将大写字母转变为小写字母,小写字母转变为大写字母,以及将前后字符对换操作。

【参考程序】

import java.io.*;

public class X6 4 6 {

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

InputStreamReader isr= new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

StringBuffer strb = new StringBuffer(br.readLine());

int i;

for(i=0; i

char ch = strb.charAt(i);

if(ch<='Z' && ch>='A')

strb.setCharAt(i,(char)(ch+32));

if(ch<='z' && ch>='a')

strb.setCharAt(i,(char)(ch-32));

}

strb.reverse();

System.out.println(strb);

}

}

【运行结果】

abc123DEFG

gfed321CBA

第5章类与对象

一、选择题

1.下列哪种类成员修饰符修饰的变量只能在本类中被访问?(d )(A)protected (B)public (C)default (D)private 2.在Java语言中,哪一个包中的类是自动导入的?(a )

A)https://www.sodocs.net/doc/4c6438655.html,ng B)java.awt C)java.io D)java.applet 3.给出下面的程序代码:

public class X4 1 3 {

private float a;

public static void m ( ){ }

}

如何使成员变量a被方法m( )访问( c )

(A)将private float a改为protected float a

(B)将private float a改为public float a

(C)将private float a改为static float a

(D)将private float a改为float a

4.有一个类B,下面为其构造方法的声明,正确的是( b )。

(A)void B(int x) {} (B)B(int x) {}

(C)b(int x) {} (D)void b(int x) {} 5.下面关于类的说法,不正确的是(c )。

(A)类是同种对象的集合和抽象(B)类属于Java语言中的复合数据类型

(C)类就是对象(D)对象是Java语言中的基本结构单位6.下面关于方法的说法,不正确的是(c )。

(A)Java中的构造方法名必须和类名相同

(B)方法体是对方法的实现,包括变量声明和合法语句

(C)如果一个类定义了构造方法,也可以用该类的默认构造方法

(D)类的私有方法不能被其他类直接访问

7.关于内部类,下列说法不正确的是(a )。

(A)内部类不能有自己的成员方法和成员变量

(B)内部类可用private或protected修饰符修饰

(C)内部类可以作为其他类的成员,而且可访问它所在的类的成员

(D)除static内部类外,不能在类内声明static成员

8.定义外部类时不能用到的关键字是( c )。

(A)final (B)public (C)protected (D)abstract 9.为AB类定义一个无返回值的方法f,使得使用类名就可以访问该方法,该方法头的形式为( d )

(A)abstract void f() (B)public void f()

(C)final void f() (D)static void f()

10.定义一个公有double型常量PI,哪一条语句最好?( b )

(A)public final double PI; (B)public final static double PI=3.14;

(C)public final static double PI; (D)public static double PI=3.14;

二、填空题

1.对象是对事物的抽象,而类是对对象的抽象和归纳。

2.从用户的角度看,Java源程序中的类分为两种:系统定义的类和用户自己定义的类。

3.一个类主要包含两个要素:数据成员和成员方法。

4.创建包时需要使用关键字package 。

5.类中的构造方法是一个特殊的方法,该方法的方法名和类名相同。

6.如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类定义一个构造方法。这个方法没有形式参数,也没有任何具体语句,不能完成任何操作。

7.静态数据成员被保存在类的内存区的公共储存单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同(相同/不同)的数值。

8.静态数据成员既可以通过对象名来访问,也可以通过类名直接访问它。

9.定义常量时要用关键字final ,同时需要说明常量的数据类型并指出常量的具体值。

10.方法体内定义变量时,变量前不能加修饰符;局部变量在使用前必须明确赋值,否则编译时会出错;而类变量在使用前可以不用赋值,它们都有一个默认的值。

11.static方法中只能引用static 类型的数据成员和static 类型的成员方法;而非static类型的方法中既可以引用static 类型的数据成员和成员方法,也可以引用类型的数据成员和成员方法。

12.引用static类型的方法时,可以使用类名做前缀,也可以使用对象名做前缀。

14.定义类时需要class 关键字,继承类时需要extends 关键字,实现接口时需要关键字implements 。

三、编程题

1.编一个程序,程序中包含以下内容:

一个圆类(Circle),包含:

属性:圆半径radius;常量:PI。

方法:构造方法;求面积方法area();求周长方法:perimeter()。

主类(X4 3 1),包含:

主方法main(),在主方法中创建圆类的对象c1和c2并初始化,c1的半径为100,c1的半径为200,然后分别显示两个圆的面积和周长。

【编程分析】按照要求创建Circle类,其中的半径可以定义为int类型,PI定义为final static double类型,求面积和周长的方法都应定义为double类型,在构造方法中对radius进行初始化。

【参考答案】

public class X4 3 1 {

public static void main(String[] args) {

Circle c1 = new Circle(100);

Circle c2 = new Circle(200);

System.out.println("c1.area() = " +c1.area()+"\tc1.perimeter() = "+c1.perimeter());

System.out.println("c2.area() = " +c2.area()+"\tc2.perimeter() = "+c2.perimeter());

}

}

class Circle{

int radius;

final static double PI=3.14;

Circle(int r){

radius = r;

}

double area(){

return PI*radius*radius;

}

double perimeter(){

return 2*PI*radius;

}

}

【运行结果】

c1.area() = 31400.0 c1.perimeter() = 628.0

c2.area() = 125600.0 c2.perimeter() = 1256.0

2.编一个程序,程序中包含以下内容:

一个学生类(Student),包含:

属性:学号s No,姓名s Name,性别s Sex,年龄s Age。

方法:构造方法,显示学号方法showNo(),显示姓名方法showName(),显示性别方法showSex(),显示年龄方法showAge(),修改年龄方法modifyAge()。

主类(X4 3 2),包含:

主方法main(),在其中创建两个学生对象s1和s2并初始化,两个对象的属性自行确定,然后分别显示这两个学生的学号、姓名、性别、年龄,然后修改s1的年龄并显示修改后的结果。

【编程分析】按照要求首先编写Student类,其中的属性和方法根据实际情况选择相应的类型和权限修饰符,要通过方法来修改年龄,因此s Age属性应该为private类型,否则可以直接在主类中进行修改,就没有必要使用方法了。

【参考答案】

public class X4 3 2 {

public static void main(String[] args) {

Student s1 = new Student(101,"张三","男",18);

Student s2 = new Student(102,"李四","女",16);

System.out.println("第1个学生的信息为:");

s1.showNo();

s1.showName();

s1.showSex();

s1.showAge();

System.out.println("第2个学生的信息为:");

s2.showNo();

s2.showName();

s2.showSex();

s2.showAge();

System.out.println("修改第1个学生的年龄:");

s1.modifyAge(24);

System.out.println("第1个学生的年龄修改为:");

s1.showAge();

}

}

class Student{

private int s No;

private String s Name;

private String s Sex;

private int s Age;

Student(int no, String name, String sex, int age){

s No = no;

s Name = name;

s Sex = sex;

s Age = age;

}

void showNo(){

System.out.println("学号:"+s No);

}

void showName(){

System.out.println("姓名:" + s Name);

}

void showSex(){

System.out.println("性别:" + s Sex);

}

void showAge(){

System.out.println("年龄:" + s Age);

}

void modifyAge(int newAge){

s Age = newAge;

}

}

【运行结果】

第1个学生的信息为:

学号:101

姓名:张三

性别:男

年龄:18

第2个学生的信息为:

学号:102

姓名:李四

性别:女

年龄:16

修改第1个学生的年龄:

第1个学生的年龄修改为:

年龄:24

第6章继承、多态和接口

一、选择题

1.已知有下面类的说明:

public class X5 1 1 extends x{

private float f =10.6f;

int i=16;

static int si=10;

public static void main(String[] args) {

X5 1 1 x=new X5 1 1();

}

}

在main()方法中,下面哪条语句的用法是正确的?( a )

A.x.f B.this.si C.X5 1 1.i D.X5 1 1.f 2.下列程序的运行结果是(c )。

public class X5 1 2 extends x{

int ab(){

static int aa=10;

aa++;

System.out.println(aa);

}

public static void main(String[] args) {

X5 1 2 x=new X5 1 2();

x.ab();

}

}

A.10 B.11

C.编译错误D.运行成功,但不输出

3.下面关于接口的说法中不正确的是(c )。

A.接口中所有的方法都是抽象的

B.接口中所有的方法都是public访问权限

C.子接口继承父接口所用的关键字是implements

D.接口是Java中的特殊类,包含常量和抽象方法

4.区分类中重载方法的依据是( a )。

A.形参列表的类型和顺序B.不同的形参名称

C.返回值的类型不同D.访问权限不同

5.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?( b )A.能,能B.能,不能C.不能,能D.不能,不能6.Java语言类间的继承关系是( a )。

A.单继承B.多重继承C.不能继承D.不一定

7.Java语言接口间的继承关系是( b )。

A.单继承B.多重继承C.不能继承D.不一定

8.一个类实现接口的情况是(a )。

A.一次可以实现多个接口B.一次只能实现一个接口

C.不能实现接口D.不一定

9.定义外部类的类头时,不可用的关键字是( c )。

A.public B.final C.protected D.abstract

10.如果局部变量和成员变量同名,如何在局部变量作用域内引用成员变量?( b )A.不能引用,必须改名,使它们的名称不相同

B.在成员变量前加this,使用this访问该成员变量

C.在成员变量前加super,使用super访问该成员变量

D.不影响,系统可以自己区分

11.下面说法不正确的是( b )。

A.抽象类既可以做父类,也可以做子类

B.abstract和final能同时修饰一个类

C.抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类或接口

D.声明为final类型的方法不能在其子类中重新定义

二、填空题

1.消息就是向对象发出服务请求,是对数据成员和成员方法的引用。2.在面向对象系统中,消息分为两类公有消息和私有消息。

3.在面向对象程序设计中,采用继承机制可以有效地组织程序结构。充分利用已有的类来创建更复杂的类,大大提高程序开发的效率,提高代码的复用率,降低维护的工作量。

4.数据成员的隐藏是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员。

5.子类可以重新定义与父类同名的成员方法,实现对父类方法的覆盖。

6.子类在重新定义父类已有的方法时,应保持与父类完全相同的方法名、返回值类型和参数列表,否则就不是方法的覆盖,而是子类定义自己特有的方法,与父类的方法无关。

7.this代表了当前对象的一个引用,super表示的是当前对象的直接父类对象的引用。

8.抽象类不能创建对象,该工作由抽象类派生的非抽象子类来实现。

9.如果父类中已有同名的abstract方法,则子类中就不能(能/不能)再有同名的抽象方法。

10.abstract类中不能有private 访问权限的数据成员或成员方法。

11.interface 是声明接口的关键字,可以把它看成一个特殊类。接口中的数据成员默认的修饰符是public static final ,接口中的成员方法默认的修饰符是public abstract 。

12.如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须实现该接口的所有抽象方法;如果实现某接口的类是abstract的抽象类,则它可以不实现该接口所有的方法。但是对于这个抽象类任何一个非抽象的子类而言,它们父类所实现的接口中的所有抽象方法以及自身所实现接口中的抽象方法都必须有实在的方法体。

13.包的作用有两个,一是划分类名空间,二是控制类之间的访问。

14.封装也称信息隐藏,是指类的设计者只为类的使用者提供类的可以访问的部分(包括类的数据成员和成员方法),而把类中的其他成员隐藏起来,使用户不能访问的机制。

15.Java提供了4种访问权限来实现封装机制,即private 、projected 、public 和默认。

16.Java中提供两种多态机制,重载与覆盖。

17.当一个构造方法需要调用另一个构造方法时,可以使用关键字this ,同时这个调用语句应该是整个构造方法的第一条可执行语句。

18.如果子类自己没有构造方法,那么父类也一定没有(有/没有)带参的构造方法,此时它将继承父类的无参构造函数作为自己的构造方法;如果子类自己定义了构造方法,则在创建新对象时,它将先执行父类的构造方法,然后再执行自己的构造方法。

19.对于父类的含参数构造方法,子类可以通过在自己的构造方法中使用super 关键字来调用它,但这个调用语句必须是子类构造方法的第一条可执行语句。

20.创建一个名为myPackage的包的语句为package myPackage ,该语句应该放在程序第一行位置。

三、编程题

1.编写一个实现方法重载的程序。

【编程分析】重载的含义就是在一个类中定义多个具有相同方法名,不同参数列表的方法。在下面程序中的类中定义了三个同名方法area,分别用于求圆、矩形和三角形的面积。三个方法具有不同的参数。

【参考程序】

public class X5 3 1{

JAVA期末考试试卷

天津城市建设学院2007~2008学年第二学期 《 java 语言程序设计A 》 试题A 卷 课程号:073101-0 试卷说明:闭卷考试,时间120分钟。 一、 填空(本题共15空,每空2分,共30分) 1.如果一个java 源程序文件中定义有4个类,使用sun 公司的JDK 编译器javac 编译该源程序文件将产生_____4___个文件名与类名相同扩展名为___.Class_____的字节码文件。 2.Java 中所有类都是类 __Object__的子类。 3.请填出在java .lang 包中与下列基本数据类型相对应的封装类: float :java .lang .Float , char : _ java .Lang.char_______, boolean : ___ java .Lang.boolean_____。 4.被关键字____final______修饰的方法是不能被当前类的子类重新定义的方法 5.线程的四种状态是__新建_____ 、_运行_ 、_中断 、__死亡___。 6.java 语言中__https://www.sodocs.net/doc/4c6438655.html,ng.Objet ___是所有类的根。 7.Swing 的事件处理机制包括__事件的监听者__、事件和事件处理者。 8.URL_____Uniform Resourse Locator_____是的缩写。 9.java 有两类应用程序java Application 和____java 10.转义字符以___\__开头。 二、选择(本题共20小题,每题2分,共40分) 1.欲构造ArrayList 类的一个实例,此类继承了List 接口,下列哪个方法是正确的 ? ( B ) A 、 ArrayList myList=new Object (); B 、 List myList=new ArrayList (); C 、 ArrayList myList=new List (); D 、 List myList=new List (); 2.paint()方法使用哪种类型的参数? ( A ) A 、 Graphics B 、 Graphics2D C 、 String D 、 Color 3.指出正确的表达式 ( C ) A 、 byte=128; B 、 Boolean=null; C 、 long l=0xfffL; D 、 double=0.9239d; 4.指出下列程序运行的结果 ( 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'; } } B 、 good and abc B 、 good and gbc C 、test ok and abc D 、 test ok and gbc 5.运行下列程序, 会产生什么结果 ( A )

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、在现实生活中,对象是指客观世界的实体

java模拟试题附答案(一)

scjp模拟试题(一) Question No: 1 1.public class test ( 2. public static void main (String args[]) { 3. int i = 0xFFFFFFF1; 4. int j = ~i; 5. 6. } 7. ) What is the decimal value of j at line 5? A. 0 B. 1 C. 14 D. –15 E. An error at line 3 causes compilation to fail. F. An error at line 4 causes compilation to fail. 答案: C Question No: 2 Given: Integer i = new Integer (42); Long 1 = new Long (42); Double d = new Double (42.0); Which two expressions evaluate to True? (Choose Two) A. (i ==1) B. (i == d) C. (d == 1) D. (i.equals (d))

E. (d.equals (i)) F. (i.equals (42)) 答案: D, E Question No: 3 Exhibit : 1. public class test ( 2. private static int j = 0; 3. 4. private static boolean methodB(int k) ( 5. j += k; 6. return true; 6. ) 7. 8. public static void methodA(int i) { 9. boolean b: 10. b = i < 10 | methodB (4); 11. b = i < 10 || methodB (8); 12. } 13. 14. public static void main (String args[] ) ( 15. methodA (0); 16. system.out.printIn(j); 17. ) 18. ) What is the result? A. The program prints “0” B. The program prints “4” C. The program prints “8”

JAVA复习题 有答案

复习题 一、选择题 1、下列Java标志符中合法的是:() A H3_sum B -name C student# D 9_Hello123 2.Java源文件和编译后的文件扩展名分别为() A. .class和.java B. .java和.class C. .class和.class D. .java和.java 3.对于同一消息,对象可以产生不同的行为,这称为类的什么特性?()A)继承性B)封装性C)多态性D)抽象性 4、用来引入包语句的关键词是:() A)import B)abstract C)package D)extends 5.对于小程序,当离开包含Applet的主页后又再返回时将调用()方法。A)start( ) B)init( ) C)destroy( ) D)stop( ) 6.下列对Java中的继承描述错误的说法是() A.子类只能有一个父类 B.子类可作为另一个子类的父类 C.子类可以访问父类的私有属性 D.子类继承父类的方法访问权限保持不变 7.哪种循环在条件表达式被计算之前至少执行循环体语句一次?( ) A)do-while循环B)for循环C)while循环D)以上都不是 8.定义数组String[] a={"ab","abc","abcd","abcde"},数组中a[1]指的是()。 A.ab B.abc C.abcde D.数组越界 9.如果希望组件从左往右,从上到下自动布局界面,应使用哪种布局?()A)没有B)BorderLayout C)FlowLayout D)GridLayout 10.下列说法正确的是() A. 最终类在特殊情况下可以有子类 B. 抽象类只能有一个子类 C. 多态可以通过方法重写和方法重载实现 D. 抽象类不可以声明成员变量和成员方法,只能声明抽象方法 11.下列语句中访问类的方法正确的是:() A)https://www.sodocs.net/doc/4c6438655.html, B)https://www.sodocs.net/doc/4c6438655.html,( ) C)book->name D)book_name 12.下列选项中哪个是类Pen的构造方法() A)public void Pen() {} B)public static Pen() {} C)public Pen() {} D)public static void Pen() {} 13.单击菜单触发的事件是?() A. ActionEvent B.ItemEvent C.MouseEvent D. KeyEvent 14.关于try/catch/finally结构的异常捕获和处理,说法错误的是()A)try部分是必须的B)catch部分也是必须的 C)可以有多个catch部分D)finally部分也是必须的

JAVA期末试题及答案

Java 程序设计》课程试卷 1.使用 Java 语言编写的源程序保存时的文件扩展名是( )。 (A ) .class ( B ) .java C ) .cpp ( D ) .txt 2.设 int a=-2 ,则表达式 a>>>3 的值为( )。 (A ) 0 (B )3 (C ) 8 (D )-1 3.设有数组的定义 int[] a = new int[3] ,则下面对数组元素的引用错误的是( ) ( A )a[0]; ( B ) a[a.length-1]; (C )a[3]; (D )int i=1 ; a[i]; 4.在类的定义中可以有两个同名函数,这种现象称为函数( )。 (A )封装 (B )继承 (C )覆盖 (D )重载 5.在类的定义中构造函数的作用是( )。 (A )保护成员变量 (B )读取类的成员变量 (C )描述类的特征 (D )初始化成员变量 6.下面关键字中,哪一个不是用于异常处理语句( )。 ( A ) try ( B ) break ( C ) catch ( D ) finally 7.类与对象的关系是( )。 (A )类是对象的抽象 (B )对象是类的抽象 15. Java 语言使用的字符码集是 (A) ASCII (B) BCD (C) DCB 16. 如果一个类的成员变量 (A) public (B) (C 对象是类的子类 (D )类是对象的具体实例 )。 8.下面哪一个是 Java 中不合法的标识符( ( A )$persons ( B ) twoNum ( C )_myVar ( D )*point 9.为 AB 类的一个无形式参数无返回值的方法 ( ) 。 ( A ) static void method( ) ( B ) public void method( ) ( C ) final void method( ) ( D ) abstract void method( ) 10.欲构造 ArrayList 类的一个实例,此类继承了 ( A ) ArrayList myList=new Object( ) ( B ) List myList=new ArrayList( ) ( C ) ArrayList myList=new List( ) ( D ) List myList=new List( ) 11. Java 源文件和编译后的文件扩展名分别为( (A) .class 和 .java (C).class 和 .class 12. 在 Java Applet 程序用户自定义的 (A) start( ) (B) stop( ) (C) init( ) 13. 对于一个 Java 源文件, (A) package,import,class (C) import,package,class 14. 下面哪个是非法的: (A) int I = 32; (C) double d = 45.0; method 书写方法头,使得使用类名 List 接口,下列哪个方法是正确的( ) ( B).java 和 .class (D) .java 和 .java Applet 子类中,一般需要重载父类的 (D) paint( ) import, class (B) class,import,package (D) package,class,import ( ) 定义以及 package 正确的顺序是: (B) float f = 45.0; (D) char c = // 符号错 AB 作为前缀就可以调用它,该方法头的形式为 方法来完成一些画图操作。 (D) Unicode 只能 在所在类中使用 则该成员变量必须使用的修饰是

Java复习题

1.已定义a为int类型的变量。以下选项中,合法的赋值语句是( B )。 A) a +1==2; B) a+=a*6; C) a=8.8f; D) int a=8; A、不是赋值语句,中间是双等号,是比较;如果改成等号那么表达方式属于非法 C、不能把实数直接给整型变量,要强制转换(int)8.8f D、重复定义 2.Java程序有哪两类? 应用程序(Application)和小应用程序(Applet) 3.为了使包sos中的所有公共类在当前程序中可见,可以使用的语句是( A )。 A)import sos.*; B)package sos.*; C)sos import; D)sos package; 显然需要进行导入,所以使用import,C选项非法。 4.下列的变量定义中,错误的是( A)。 A) int 6_a; B) float a; C) int i=Integer.MAX_VALUE; D) static int i=100; 标识符的合法原则:字母(包括汉字),数字,_和$这四种组成,但是不能以数字开头。 5.下列的变量定义中,正确的是(D)。 A) boolean b1=”true”; B) float x=6.6; C) byte i=200; D) double y; A、不应该加双引号 B、6.6默认是double类型,不能直接在这里使用,应该用6.6f,C、200超出范围(-127~128) 6.以下字符常量中不合法的是(D)。 A) '|' B) '\'' C) '\n' D) "我" D是字符串。 7. Java源程序要运行必须经过(编译)和(运行)两个阶段。 8. Java编译器将Java语言编写的源程序编译成(字节码)文件。 9. 下列程序段执行后c的结果是(B )。 int a = 9, b = 11, c; c= a != b ? a+b : a-b; A) –2 B) 20 C) 11 D) 9 10. 对于一个三位的正整数n=789,以下结果为8的是(D)。 A) n/10%2 B) (n-n%10)/100 C) n%10 D) n%100/10 11. 有一声明语句为boolean t;下面赋值语句中t的值为false的是(D )。 A)t=5>3; B)t=!false; C)t=(true|false); D)t=(2==3)?true:false; 12. 设 i, j, k, m为已赋值的 int 型变量,下列表达式的结果属于逻辑值的是( A)。 A) i==k & j+k >=m B) i+k C) m++ D) m=i+j 13. 若有定义int x = 13;则执行完语句x %= 8; 后,x的值是(C )。 A) 0 B) 1 C) 5 D) 8 14. 若有定义int a = 2;则执行完语句 a -= a * a; 后,a的值是( C)。 A) 0 B) 4 C) -2 D) –4 15. 下列程序段执行后 b3 的结果是(D)。 boolean b1=true, b2=true, b3; b3= !b1 ? b1 :!b2; A) 0 B) 1 C) true D) false 16. 与以前的结构化程序设计不同,Java是一种完全(面向对象),而且平台(中立)的语言,而后者又使得用Java编写出来的程序具有(可移植)性。 17.面向对象程序设计的三个特性是(继承)、(封装)和(多态)。 18. 执行下面程序段后,b, x, y的值分别是( D)。 int x=6,y=8; boolean b;

java模拟试卷3与答案

复习题 3 一、选择题 1. JDK 提供的编译器是(B)。 (A ) java.exe(B ) javac.exe (C) javap.exe( D) javaw.exe 2.以下作为 Java 程序入口的 main 方法声明正确的( C)。 (A ) public void main(String args[]) (B ) public int main(String args[]) (C) public static void main(String args[]) (D ) public static int main(String args[]) 3.以下标识符错误的是( C )。 (A )Public( B)张三( C) class(D ) main 4.java 中定义字符串 String s= ”pzhu”,下面操作可以取得字符串长度的是( A )。 (A ) s.length()( B) s.length( C)s.size()( D) length(s) 5.如下定义数组,操作正确的是(D)。 int a[]={1,2,3}; (A ) a[3]=100(B ) a[0].length( C)a++( D) a.length 6.如下定义二维数组操作错误的是()。 int a[][]={{1,2},{3}}; (A ) a[0][1]=200( B) a[0].length( C) a[1][1]=100( D) a.length 7. 以下数据类型存储空间最大的是(B)。 (A ) byte( B) long(C) float(D ) char 8. 面向对象的三大特性,不包括如下( A)。 (A )异常( B)封装(C)继承(D )多态 9、关于类的定义以下说法错误(B)。 (A )类定义使用class 关键字( B)每个类中必须有一个main 方法 (C)一个包可以包含多个类( D) java 中所有类都是Object 类的子类 10. 关于构造方法以下说法错误的是(D)。 (A)构造方法名必须与类名一致(B)构造方法可以重载 (C)构造方法是通过new 来调用(D)每个类都必须编写构造方法代码 11.关于继承如下说法错误的是(C)。 (A) Java 是单继承的(B)通过extends 来定义继承 (C)所有父类方法都可以被override的(D)继承呈现的是 is a 的关系 12.以下代码执行的结果是 ( C )。 System.out.println(" 攀枝花学院 pzhu".length()); (A)编译错误(B)运行错误(C) 9(D) 14 13. 用来存储键值对的容器是 ()。 (A )ArrayList( B ) LinkedList(C) HashSet( D) HashMap 14、 java 中用来抛出异常的关键字是( C )。 (A) try(B) catch(C) throw(D) throws 15.关于 finally块中的代码,以下说法不正确的是(A)。 (A ) try 块中的 return 语句会中断finally 块中语句的执行 (B )无论 finally 块前的语句运行是否产生异常,其中的语句都会执行 (C) finally 块中的语句通常中用作资源的清理 - 1 -

Java期末考试题

2010年——2011年Java期末考试题 一、判断题。 1.Java语言是平台无关的语言。T 2.类的静态方法中可以访问该类的非静态数据成员.F 3.Java中方法调用时参数传递都是按值传递的,因此从方法中退出时,参数的值是不 会变的。T 4.覆盖方法所抛出的异常不能比原方法更多。T 5.Final 方法不能被覆盖。T 6.抽象类中一定包含抽象方法。F 7.接口中的方法必须是抽象方法。T 8.在方法定义中,所以可能发生的异常都必须用try{} catch(){}捕捉。F 9.Java支持多重继承。F 10.Final修饰的类不能派生子类。T 11.覆盖的同名方法中,子类方法不能比父类方法的访问权限更严格。T 12.不能在静态方法中使用this.T 13.抽象类中不能创建对象。T 14.一个类可以实现多接口。T 15.接口中可以包含非静态成员。F 16.不论是否捕捉到异常try{}catch(){} final{}语句中finally块中的代码总要被执行。T 17.一个类实现一个接口,则该类必须实现接口中的所有方法。F 18.线程使用sleep方法去休眠后可以使用notify方法唤醒。F 19.线程使用sleep方法休眠是会释放该线程同步锁定的对象。F 20.Final类中的属性和方法都必须是final的。F 二、选择题 1、Java中复合数据类型不包括(D) A.类类型 B.数组 C.接口类型 D.指针 2、请从四个选项中选择答案,下列代码的执行结果是:(C) Public class Test{ Public static void main(String args[]){ Float t=9.0f; Int q=6; System.out.println((t++)*(--q)); } } A.40 B.40.0 C.45.0 D.36.0 3、下列关于修饰符混用的说法,错误的是(D) A.abstract 不能与final 并列修饰同一个类 B.abstract类中可以有非abstract的方法 C.普通类(非abstract类)中不能有abstract方法 D.static方法中能处理非static的属性 4、关于被保护访问控制符protected修饰的成员变量,以下说法正确的是(A) A.可以被该类自身、与它在同一个包中的其它类、在其它包中的该类的子类所访问B.只能被该类本身和该类的所有的子类访问 C.只能被该类自身所访问 D.只能被同一个包中的类访问 5、x=2,y=3,z=4,则表达式z*=y++*--x的值是(A) A.12 B.24 C.16 D.3 6、以下赋值语句正确的是(D) A.char c1=”a” B.float f1=3.22 C.byte b1=266 D.long L1=0xAC8L 7、Java不支持多重继承,但我们可以通过(B)实现 A.多态 B.接口 C.覆盖 D.抽象类 8.已知类person是类student的父类,以下数组定义和赋值哪些是正确的(A) A. person p[]=new person[3]; p[1]=new student(); B .student s[]=new person[3]; s[1]=new person(); C .person p[]= new student[3];p[1]= new person(); D .student s[]=new student[3];s[1]=new person; 9 编译MyClass.java之后,得到了三个字节码文件:MyClass.class , MyClasslittle$.class MyClass$1.class.这表明(C) A.MyClass类中的两个方法:little和1 B. MyClass.Java中有三个类:MyClass、little和1 C. MyClass类中有两个内部类:一个是命名的little,另一个是匿名的1 D. MyClass、little和1,这三者没什么关系 10、main 方法是java Application 程序执行的入口点,关于main方法的方法头以下(B)是合法的。 A.public static void main() B.public static void main(String arg[]) C.public static int main(String[] arg) D. B.public void main(String arg[]) 11、当编译和运行下面的代码会出现什么情况?(A)

JAVA复习题及答案

第一章JA V A概述 1.JA V A中哪三种平台:Java ME(嵌入式平台),Java SE(标准平台),Java EE(企业级平台). 2.JA V A从第几版称为JA V A2:JA V A 1.2版。 3.JA V A有否指针:无。 4.JA V A的API指的是什么:Application Programming Interface,JA V A的类库。 5.JA V A平台无关性是如何实现的:通过编译生成与平台无关的代码──字节码,而不是通常的特定机器上的机 器码,由平台上的Java虚拟机中的Java解释器解释执行。 6.JA V A有哪两种程序形式:Application和Applet程序。 7.Application程序运行时系统调用程序的哪个方法:main()方法。Applet程序执行时系统自动调用程序的哪个方 法:init()方法。 8.绘图程序中系统自动调用哪个方法:paint(Graphics g)方法。 9.JDK是什么:Java开发工具包(Java Development Kit ) 的缩写,包括JAVA类库、JAVA编译器、JAVA解释 器、运行时环境、命令行工具。 10.有哪几种主要的可视化的集成源程序编辑环境:Eclipse, JCreator, JBuilder等。 11.安装JDK的可执行文件是:jdk-1_5_0-windows-i586.exe 12.安装JDK帮助文档的是:jdk-1_5_0-doc.zip 第二章JA V A语言基础 13.保留字是什么意思,能否用于程序员定义自己的类、方法、变量等名字:JA V A中已定义的用于特定用途的标 识符。不能。 14.i++与++i有什么区别? 15.写出各种转义字符?p17。\t, \n, \r, \‖, \’, \\ 16.编程良好习惯中,对象名、包名、类名、变量名、常量名、接口名、方法名中的字符的大小写如何设置?Package –名词且小写;Class--名词且第一个字母大写;Interface—同Class;Methods-动词且第一个字母小写,分隔词第一个字母大写,不用‖-―;Variable—第一个字母小写,不用‖_‖,‖$‖(对于inner class有意义);Constants—大写并用‖_‖ 17.标识符的用途:用于给类、方法、变量、接口、程序块、对象等起名字。 18.标识符中可否有空格,可否有#号:不能,只能有字母、下划线、美元符、数字 19.判断合法的标识符:identifier,userName,_FH User_Name ,_sys_val,$change 2mail,room#//,class,ab-cd,ac eh 20.JA V A中标识符大小写敏感吗? 21.实数类型的两种类型中哪种是默认的:double。 22.float和int型的数据各占多少位(bit)。32位 23.什么叫局部变量:方法内部的变量。 24.局部变量有默认值吗:没有。 25.局部变量出了方法体后还存在吗:不存在。 26.一个变量可以重复定义吗:不能。 27.低级类型的数据与高级类型的数据进行运算时,怎样进行类型转化:低级的类型首先自动转化为高级类型,然 后进行运算。 28.域(field)变量应该定义在方法之外还是方法之内:之外。 29.sum+=i的展开式:sum=sum+i 30.计算a+=a*=b-=(a=4)*(b=2)的结果,其中初始时a=4,b=2。 31.―&‖和―&&‖的区别? 32.关系运算符与逻辑运算符哪个优先级高,为什么:关系,因为关系运算的结果false或true用于逻辑运算。 33.以下计算结果是否对?

JAVA语言复习题及答案

14年(下)程序设计(JA V A语言)复习题 第一:单选 1. 若有定义int x=3,y;则执行语句y=(++x)+(++x)+(++x);后y=()。 (A) 12 (B) 18 (C) 9 (D) 15 2. 下列选项中,不是Java关键字的是()。 (A) double (B) Integer (C) float (D) default 3. 在成员变量与局部变量重名时,若想在方法内使用成员变量,要使用的关键字是()。 (A) super (B) import (C) this(D) return 4. 下列说法中错误的是( B )。 (A) 一个类中的实例方法可以调用其他实例方法 (B) 静态方法可以调用实例方法 (C) 实例方法可以调用静态方法 (D) 静态方法可以调用静态方法 5. 下列关于super的说法中错误的是()。 (A) 用来访问父类被隐藏的成员变量 (B) 用于调用父类中被重写的方法 (C) 用于定义父类 (D) 用于调用父类的构造函数 6. 下列选项属于接口中方法默认访问控制方式的是()。 (A) public (B) private (C) protected(D) default 7. 定义一个名为key的类,下列选项中使其不能被继承的定义是()。 (A) class key{} (B) native class key{} (C) class key{ final;} (D) final class key{} 8. 若有定义String tom=""我们是学生"";则tom.length()的值是()。 (A) 5 (B) 10 (C) 6 (D) 11 9. 调用repaint()方法,会出现什么情况( C )。 (A) 清除以前pain()方法所画的内容 (B) 保留原来pain()所画的内容 (C) 清除pain()以前所画的内容,再一次调用pain()方法 (D) 在pain()以前所画内容基础上,再一次调用pain()画新的内容 10. 从下面的main()调用java lyrics a kiss is but a kiss 中可以访问单词“kiss”的是()。 (A) args[0] (B) args[5] (C) args[4] (D) args[3] 11. 使一个线程放弃处理器并休眠1.5秒,应调用的方法是()。 (A) sleep(1.5) (B) sleep(1500) (C) suspend(1.5) (D) suspend(1500) 12. 如要使处于等待状态的线程恢复到运行状态,应调用的方法是()。 (A) start() (B) run() (C) resume() (D) notify() 13. 如果想获得一个InetAddress对象的主机域名,可调用的方法是()。

JAVA模拟试题(含答案)

一、请分别写出下面程序的运行结果,将答案添在每道题后的空格处 1. public class Test1 { public static void main(String[] args) { int x=10,y=20; System.out.print("x="+(x++)+" y="+(++y)+" sum="+(x+y)); } } 运行结果:x=10 y=21 sum=32 2. public class Test2 { public static void main(String[] args) { boolean end; for(int i=2;i<20;i++){ end=true; for(int j=2;j<=i;j++){ if(i%j==0&&j

相关主题