admin 管理员组

文章数量: 1086019


2024年12月30日发(作者:中英在线翻译转换器)

java程序设计试题库

《Java语言程序设计基础教程》

练习思考题参考答案

第1章 Java程序设计概述

单项选择题

1.编译Java Application源文件将产生相应的字节码文件,扩展

名是什么

A. .java

B. .class

C. .html

D. .exe

解答:B

2.Java语言具有许多优点和特点,下列选项中,哪个反映了

Java中“一次编译,

随处运行”的特点。

A. 简单性

B. 平台无关性

C. 面向对象性

D. 安全性

解答:B

3.Java语言具有许多优点和特点,下列选项中,哪个反映了

Java中并行机制的

特点。

A. 多线程

B. 平台无关性

C. 面向对象性

D. 安全性

解答:A

4.在Java语言中,下列哪些语句关于内存回收的说明是正确的?

A.程序员必须创建一个线程来释放内存;

B.内存回收程序负责释放无用内存;

C.内存回收程序允许程序员直接释放内存;

D.内存回收程序可以在指定的时间释放内存对象

解答:B

5.一个Java源文件中最多只能有多少个public类。

A. 1个

B. 2个

C. 3个

D. 任意多个

解答:A

6.下面哪一个不是Java语言所具有的特点。

A. 没有全局变量,在类的定义外部没有任何的变量定义;

B. 不直接支持指针操作,而使用更安全的引用类型;

C. 支持子类对父类的多继承;

D. 具有自动垃圾收集功能;

解答:C

7.下面哪一个不是Java开发工具包JDK的组成部分。

A. Java的编译器;

B. Java的解释器;

C. Java的API继承类库;

D. Eclipse开发工具;

解答:C

8.JDK提供的编译器是()。

A. B.

C. D.

解答:B

9.作为Java应用程序入口的main方法,其声明格式可以是()

A. public void main(String [] args)

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

C. public static void Main(String * args)

D. public int main(String [] args)

解答:B

10.下列说法正确的是(A )

A、JAVA程序的main方法必须写在类里面

B、JAVA程序中可以有多个main方法

C、JAVA程序中类名必须与文件名一样

D、JAVA程序的main方法中如果只有一条语句,可以不用{}(大

括号)括起来

11.下列哪些语句关于Java内存回收的说明是正确的? ( B )

A、程序员必须创建一个线程来释放内存

B、内存回收程序负责释放无用内存

C、内存回收程序允许程序员直接释放内存

D、内存回收程序可以在指定的时间释放内存对象

填空题

1、开发与运行Java程序需要经过的三个主要步骤为____________、

____________和____________。

解答:编辑源程序、编译生成字节码和解释运行字节码

2、使用Java编译器___ 编译源文件得到字节码文件。

3、Java应用程序必须通过Java解释器来解释执行其字节码文件。

4、如果Java源文件中有一个类是public类,那么源文件的名字

必须与这个类的名字完全_相同______,扩展名是.java 。

5、Java应用程序总是从主类的____main___方法开始执行.

简答题

13.简述Java程序的开发过程?

(1)使用一个文字编辑器,编写源文件。(2)使用java编译器,

编译源文件得到字节码文件。

(3)解释运行字节码,分两种java应用程序必须通过java解释

器来解释执行,java小应用程序必须使用解释器和浏览器运行程序。

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语

言”?

解答:

Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文

件被编译成能被Java 虚拟机执行的字节码文件。

Java被设计成允许应用程序可以运行在任意的平台,而不需要程

序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为

可能,因为它知道底层硬件平台的指令长度和其他特性。

语言的关键特点有哪些?

解答:

简单性

平台无关性

面向对象性

安全性

分布式

多线程

动态性

综合题

第2章 Java基本的程序设计结构

单项选择题

1、下面哪一项在java中是非法的标识符?()

A. $user

B. point

C. You&me

D. _endline

解答:C

2、若有定义int a=9,b=6; 那么a>b的值是:()

A. 0

B. 1

C. false

D. true

解答:D

3、执行完以下代码int[ ] x = new int[25];后,以下说明正确的是:

()

A. x[24]为0

B. x[24]未定义

C. x[25]为0

D. x[0]为空

解答:A

4、Java应用程序的main方法中有以下语句,则输出的结果是

()。

int[] x={2,3,-8,7,9};

int max=x[0];

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

if(x[i]>max)

max=x[i];

}

A. 2

B. -8

C. 7

D. 9

解答:D

5、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是

()

A. 3

B.

C. 4

D. 5

解答:A

5、执行,这条代码的输出结果是()

A. 1

B.

C. D. 0

解答:A

6、下列语句有错误的是:()

A. int []a;

B. int []b=new int[10];

C. int c[]=new int[];

D. int d[]=null;

解答:C

7、下列语句有错误的是:()

A. int a[][]=new int[5][5];

B. int [][]b=new int[5][5];

C. int []c[]=new int[5][5];

D. int [][]d=new int[5,5];

解答:D

8、下列哪一个不属于Java中的8种基本数据类型()

A. double; ;

C. int;

D. String;

解答:D

9、以下数据类型存储空间最大的是()。

(A)byte (B)long (C)float (D)char

解答:B

10、"5" + 2);的输出结果应该是()。

A 52 B7

C2 D5

答案:A

11.在类的定义中可以有两个同名方法,每个方法的参数不同,

这种现象称为方法(D )。

(A)封装(B)继承(C)覆盖(D)重载

12.java中定义字符串String s=”pzhu”,下面操作可以取得字

符串长度的是()。

A. ()

B.

C. ()

D. length(s)

解答:A

13.指出下列程序运行的结果(B)(很难)

public class Example {

String str = new String("good");

char[] ch = { 'a', 'b', 'c' };

public static void main(String args[]) {

Example ex = new Example();

, ;

+ " and ");

}

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

14.下面代码的运行结果为:(C)(较难)

import .*;

import .*;

public class foo{

public static void main (String[] args){

String s;

"s=" + s);

}

}

A 代码得到编译,并输出“s=”

B 代码得到编译,并输出“s=null”

C 由于String s没有初始化,代码不能编译通过

D 代码得到编译,但捕获到NullPointException异常

15.关于以下程序段,正确的说法是( C )

1.String s1=”abc”+”def”;

2.String s2=new String(s1);

3.if(s1= =s2)

4.= succeeded”);

5.if (s2))

6.succeeded”);

A、行4与行6都将执行

B、行4执行,行6不执行

C、行6执行,行4不执行

D、行4、行6都不执行

16.Java application中的主类需包含main方法,main方法的

返回类型是什么?(D )A、int B、float

C、double

D、void

17.为一个boolean类型变量赋值时,可以使用(B )方式

A、boolean = 1;

B、boolean a = (9 >= 10);

C、boolean a="真";

D、boolean a = = false;

18.表达式(11+3*8)/4%3的值是( D )

A、31

B、0

C、1

D、2

19.运算符优先级别排序正确的是(A)(太难)

A、由高向低分别是:()、!、算术运算符、关系运算符、逻辑运算

符、赋值运算符;

B、由高向低分别是:()、关系运算符、算术运算符、赋值运算

符、!、逻辑运算符;

C、由高向低分别是:()、算术运算符、逻辑运算符、关系运算

符、!、赋值运算符;

D、由高向低分别是:()、!、关系运算符、赋值运算符、算术运算

符、逻辑运算符;

20.下列值不为true的表达式有(C )。

A、"john" = = "john"

B、"john".equals("john")

C、"john" = "john"

D、"john".equals(new String("john"))

21、下面的方法,当输入为2的时候返回值是多少?(D)(很难)

public static int getValue(int i) {

int result = 0;

switch (i) {

case 1:

result = result + i;

case 2:

result = result + i * 2;

case 3:

result = result + i * 3;

}

return result;

}

A0 B2 C4 D10

答案:D

解析:注意这里case后面没有加break,所以从case 2开始一直

往下运行。

22、下面有关for循环的描述正确的是(A )

A、for循环体语句中,可以包含多条语句,但要用大括号括起来

B、for循环只能用于循环次数已经确定的情况

C、在for循环中,不能使用break语句跳出循环

D、for循环是先执行循环体语句,后进行条件判断

23、score是一个整数数组,有五个元素,已经正确初始化并赋

值,仔细阅读下面代码,程序运行结果是(B )

temp = score[0];

for (int index = 1;index < 5;index++) {

if (score[index] < temp) {

temp = score[index];

}

}

A. 求最大数

B. 求最小数

C. 找到数组最后一个元素

D. 编译出错

26、

填空题

1、Java语言是一种完全的_面向对象_程序设计语言

2、String s1=“China”; int n=( ); n的值为_5__

3、在Java语言中,基本数据类型包括:____整数类型、____浮点

类型、____字符类型_和____布尔类型

17、在Java的基本数据类型中,char型采用Unicode编码方案,

每个Unicode码占用__2___字节内存空间,这样,无论是中文字符还

是英文字符,都是占用__2___字节内存空间。

18、设x = 2 ,则表达式( x + + )/3 的值是__0___。

20、设有数组定义:

int MyIntArray[] = { 10, 20, 30, 40, 50, 60, 70 };

则执行以下几个语句后的输出结果是: 120 。

int MyIntArray[] = { 10, 20, 30, 40, 50, 60, 70 };

int s = 0;

for (int i = 0; i < ; i++)

if (i % 2 == 1)

s += MyIntArray[i];

、数组对象的长度在数组对象创建之后,就__不会____改变。数组

元素的下标总是从___0___开始。

22、对于数组int[][]t={{1,2,3},{4,5,6}}来说,等于__2___,

t[0].length等于__3____。简答题

1、Java的基本数据类型有哪8种,每种类型的内存空间分别是多

少。

综合题

26、编程计算10~20的整数的平方值,将结果保存在一个数组中。

27、编写一个程序使之从键盘读入10个整数存入整型数组a中,

并输出这10个整数的最大值和最小值。

import class lianxi30 {

public static void main(String args[]) {

Scanner temp;

float[] sum = new float[11];

float max, min;

for (int i = 0; i < 10; i++) {

"请输入第一个数字(回车结束):");

temp = new Scanner;

String a = ();

sum[i] = (a); 实例变量是类的成员变量。

B. 在方法中定义的局部变量在该方法被执行时创建。

C. 实例变量用关键字static声明。

D. 局部变量在使用前必须被初始化。

解答:C

2、在Java语言中,下列哪个包是编译器自动导入的?()

A. B.

C. D.

解答:B

6、不允许作为类及类成员的访问控制符的是()。

A. public

B. private

C. static

D. protected

解答:C

7、为AB类的一个无形式参数无返回值的方法method书写方法

头,使得使用类名AB 作为前缀就可以调用它,该方法头的形式为()。

A、static void method( )

B、public void method( )

C、final void method( )

D、abstract void method( )

解答:A

8、可以在下面代码段point x处写入的是?()

String str;

B. static int PI=;

C. public class MyClass{import .*;

解答:D

9、Java提供的许多类在不同的包中,使用下面哪个语句可以引入

包中的类。

A. package

B. include

C. import

D. add

解答:C

11、已知A类被打包在packageA , B类被打包在packageB ,

且B类被声明为public ,且有一个成员变量x被声明为protected控

制方式。C类也位于packageA包,且继承了B 类。则以下说法正确

的是:()

A、A类的实例不能访问到B类的实例

B、A类的实例能够访问到B类一个实例的x成员

C、C类的实例可以访问到B类一个实例的x成员

D、C类的实例不能访问到B类的实例

解答:C(太难)

13、在Java中,关于final关键字的说法正确的是()

A、如果修饰变量,则一旦赋了值,就等同一个常量。

B、如果修饰类,则该类只能被一个子类继承。

C、如果修饰方法,则该方法不能在子类中被覆盖。

D、如果修饰方法,则该方法所在的类不能被继承。

解答:A,C

14、关于构造方法以下说法错误的是( D )。

(A)构造方法名必须与类名一致(B)构造方法可以重载

(C)构造方法是通过new来调用(D)每个类都必须编写构造

方法代码

15、关于类的定义以下说法错误(B )。

(A)类定义使用class关键字(B)每个类中必须有一个main方

(C)一个包可以包含多个类(D)java中所有类都是Object类

的子类

16、在创建对象时必须(C)?

A)?先声明对象,然后才能使用对象?

B)?先声明对象,为对象分配内存空间,然后才能使用对象?

C)?先声明对象,为对象分配内存空间,对对象初始化,然后才能

使用对象?

D)?上述说法都对

17、在调用方法时,若要使方法改变实参的值,可以(B)

A) 用基本数据类型作为参数B) 用对象作为参数

C) A和B都对D) A和B都不对

18、关于以下程序代码的说明正确的是( D )

class HasStatic{

private static int x=100;

public static void main(String args[ ]){

HasStatic hs1=new HasStatic( );

++;

HasStatic hs2=new HasStatic( );

++;

hs1=new HasStatic( );

++;

-;

}

}

A、5行不能通过编译,因为引用了私有静态变量

B、10行不能通过编译,因为x是私有静态变量

C、程序通过编译,输出结果为:x=103

D、程序通过编译,输出结果为:x=102

19、以下关于构造函数的描述错误的是( A )。

A、构造函数的返回类型只能是void型。

B、构造函数是类的一种特殊函数,它的方法名必须与类名相同。

C、构造函数的主要作用是完成对类的对象的初始化工作。

D、一般在创建新对象时,系统会自动调用构造函数。

20、Java中,在如下所示的Test类中,共有(C )个构造方法。

public class Test{

private int x;

public Test(){ x=35; }

public void Test(double f){ =(int)f; }

public Test(String s){}

}

A、0

B、1

C、2

D、3

21、在Java中,关于构造方法,下列说法错误的是( C )

A、构造方法的名称必须与类名相同

B、构造方法可以带参数

C、构造方法不可以重载

D、构造方法绝对不能有返回值

22、在Java语言中,下列关于类的继承的描述,正确的是(B )。

A、一个类可以继承多个父类

B、一个类可以具有多个子类

C、子类可以使用父类的所有方法

D、子类一定比父类有更多的成员方法

23、分析选项中关于Java中this关键字的说法正确的是(A )

A、this关键字是在对象内部指代自身的引用

B、this关键字可以在类中的任何位置使用

C、this关键字和类关联,而不是和特定的对象关联

D、同一个类的不同对象共用一个this

24、在Java接口中,下列选项中有效的方法声明是(A )。

A、public void aMethod();

B、public final void aMethod();

C、protected void aMethod();

D、private void aMethod();

25、下列选项中关于Java中super关键字的说法正确的是(A )。

A、super关键字是在子类对象内部指代其父类对象的引用

B、super关键字不仅可以指代子类的直接父类,还可以指代父类

的父类

C、子类通过super关键字只能调用父类的方法,而不能调用父类

的属性

D、子类通过super关键字只能调用父类的属性,而不能调用父类

的方法

1、在Java程序中,通过类的定义只能实现____单重继承____,但

通过接口的定义可以实现多____多重继承____。

2、_抽象(abstract)___方法是一种仅有方法头,没有具体方法

体和操作实现的方法,该方法必须在抽象类之中定义。__final____方法

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

3、面向对象程序设计的三个特征是_____封装、____多态、____继

4、Java是面向对象语言,类是客观事物的_抽象____,而对象是

类的_实例____。

5、如果在子类中想使用被子类隐藏的父类成员变量或方法,就可

以使用关键字__ super_____。

6、Java中有一种叫作___构造方法__的特殊方法用来对类的对象

成员进行初始化。

7、JA V A语言中提供了两种类型的字符串类来处理字符串,它们

是___String_和___StringBuffer类

8、Java语言中,所有的类都是___Object的子类,Java的窗口通

常是___JFrame__的子类,___抽象_类只能定义但不能被实例化,_ 最

终_类不能被继承

9、一般Java程序的类体由两部分组成:一部分是_属性_,另一部

分是_方法_

10、分别用__class_关键字来定义类,用_new__关键字来分配实

例存储空间。

11、Java中类成员的限定词有以下几种:__ private_ _, public __

_, protected __ _, _缺省_ _。其中,_public __的限定的范围最大。类

中限定为_ private __的成员,只能被这个类本身内部访问。

12、Java类中,如果类的定义者没有显式的定义任何构造方法,

系统将自动提供一个___无参默认_构造方法。

13、在子类中定义与父类的相同的方法,若在多个子类中定义相同

的方法,则可以调用不同子类中的相同方法而实现不同的功能,这实现了

程序运行时的______ 多态。

1. 简单阐述方法的重载和方法的重写之间的区别

解答:

重写是子类的方法覆盖父类的方法,要求方法名和参数都相同

重载是在同一个类中的两个或两个以上的方法,拥有相同的方法

名,但是参数却不相同

2、简述实例变量和类变量的区别。

解答:类变量也叫静态变量,也就是在变量前加了static 的变量;

实例变量也叫对象变量,即没加static 的变量;

区别在于:类变量是所有对象共有,其中一个对象将它值改变,

其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一

个对象将其值改变,不影响其他对象;

2、简述实例方法和类方法的区别

解答:实例方法可以对当前对象的实例变量进行操作,也可以对

类变量进行操作,实例方法由实例对象调用。但类方法不能访问实例

变量,只能访问类变量。类方法可以由类名直接调用,也可由实例对

象进行调用。类方法中不能使用this或super关键字。

3、面向对象的三个基本特征是什么,分别简单介绍每个特征。

解答:三大特性是:封装,继承,多态。

封装性就是把对象的属性和服务结合成一个独立的单位,并尽可

能隐蔽对象的内部细节。

特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一

般类的继承。

对象的多态性是指在一般类中定义的属性或服务被特殊类继承之

后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属

性或服务在一般类及其各个特殊类中具有不同的语义。

4、简单阐述成员变量和局部变量的区别。

解答:

1)成员变量在整个类内都有效,局部变量只在定义它的方法内有

效。

2)成员变量又分为实例成员变量(简称实例变量)和类变量(也

称静态变量),如果成员变量的类型前面加上关键字static,这样的成

员变量称为类变量或静态变量。

3)如果局部变量的名字与成员变量的名字相同,则成员变量被隐

藏,也就是说,这个成员变量在这个方法内暂时失效。这时如果想在

该方法内使用成员变量,必须使用关键字this。

5、简述对象的引用和实体。

解答:当用类创建一个对象时,类中的成员变量被分配内存空间,

这些内存空间称为

该对象的实体,而对象中存放着引用,以确保实体由该对象操作

使用。没有实体的对象称为空对象,空对象不能使用,即不能让一个

空对象去调用方法产生行为。

6、简述this关键字的意义,以及它在成员方法和构造方法中如何

使用。

解答:this是Java的一个关键字,表示某个对象。this可以出现

在实例方法和构造方法中,但不可以出现在类方法中。this可以出现

在实例方法和构造方法中,但不可以出现在类方法中。this关键字出

现在类的构造方法中时,代表使用该构造方法所创建的对象。实例方

法必须通过对象来调用,当this关键字出现在类的实例方法中时,代

表正在调用该方法的当前对象。

成员函数中定义了和成员变量中相同的变量时,引用成员变量要

用this;构造函数中调用同一个类的其他构造函数时用this。

7、简单描述Java的参数传值中的两种方式,基本数据类型参数

的传值和引用类型参数的传值?

解答:在基本数据类型参数的传值中,基本数据类型的参数向该

参数传递的值的级别不可以高于该参数的级别。

在引用类型参数的传值中,Java的引用类型数据包括对象、数组

和接口,当参数是引用类型时,“传值”传递的是变量的引用而不是

变量所引用的实体。如果改变参数变量所引用的实体,就会导致原变

量的实体发生同样的变化,但是如果改变参数的引用不会影响向其传

值的变量的引用。

8、基本数据类型和对象作为参数传递的不同?

解答:

(1)基本数据类型作为参数在方法中传递的是值传递。

(2)对象是引用传递,当对象作为参数传递时,传递的是对象的

地址。

综合题

1、定义一个“点”(Point)类用来表示三维空间中的点,类体的成

员变量x,y,z分别表示三维空间的坐标。类体中具有如下成员方法的定

义:

1)构造方法Point()可以生成具有特定坐标的点对象。

2)setX(),setY(),setZ()为可以设置三个坐标的方法。

3.)getDistance()为可以计算该点距离原点距离平方的方法。

解答:

class Point{

double x,y,z ;

Point(double _x,double _y,double _z)

{

x = _x ;

y = _y ;

z =_z ;

}

void setX(double _x){

x=_x ;

}

void setY(double _y){

y=_y ;

}

void setZ(double _z){

z=_z ;

}

double getDistance(){

return ( x*x+y*y+z*z) ;

}

}

2、编写一个Java应用程序Test类,实现成员方法max(a,b)的重

载。具体要求如下:

a) 编写void max(int a,int b)成员方法,对两个整数进行大小的比

较,输出打印较大的那个整数。

b) 编写void max(float a,float b)成员方法,对两个float数进行

大小的比较,输出打印较大的那个float数。

c) 编写void max(double a,double b)成员方法,对两个double

数进行大小的比较,输出打印较大的那个double数。

public class Test{

void max(int a,int b){

a:b) ;

}

void max(float a,float b){

a:b) ;

}

void max(double a, double b){

a:b) ;

}

public static void main(String[] args){

Test t =new Test() ;

(3,4) ;

}

}

3、编写一个矩形类对数学中的矩形进行抽象描述,并具有方法可

以计算矩形的周长和面积,具体分为以下三个子任务完成。

(1)创建Rectangle类,添加属性width、height,并定义构造

方法Rectangle(double _width, double _height);

(2)在Rectangle类中添加两种方法computCircum()和

computArea()分别计算矩形的周长和面积;

(3)编程利用Rectangle对象输出一个30*40的矩形的周长和

面积。

解答:

public class TestRectang {

public static void main(String[] args) {

抽象类中不可以有非抽象方法

B. 某个非抽象类的父类是抽象类,则这个子类必须重载父类的所

有抽象方法

C. 可以用抽象类直接去创建对象

D. 接口和抽象类是同一个概念

解答:B

8、抽象类A和抽象类B的定义如下:

abstract class A {

abstract int getinfo();

}

public class B extends A {

private int a = 0;

public int getinfo() {

return a;

}

public static void main(String args[]) {

B b = new B();

}

}

关于上述代码说明正确的是()。

A. 输出结果为0

B.通过编译但没有输出任何结果

C. 第5行不能通过编译

D. 程序第2行不能通过编译

解答:A

9、下面程序的运行结果是______

class ex4_5_11_A {

protected static int count = 0;

public ex4_5_11_A() {

count++;

}

}

class ex4_5_11_B extends ex4_5_11_A {

public ex4_5_11_B() {

count++;

}

}

class ex4_5_11 {

public static void main(String args[]) {

ex4_5_11_B x = new ex4_5_11_B();

"count=" + ;

}

}

A. count=1

B. count=2

C. count=3

D. count=4

解答:B

10、设有下面两个类的定义:

class Person

{ long id; A a0=new A();

2. A a1 =new B();

3. A a2=new C();

问以下哪个说法是正确的?( D )

A、只有第1行能通过编译

B、第1、2行能通过编译,但第3行编译出错

C、第1、2、3行能通过编译,但第2、3行运行时出错

D、第1行、第2行和第3行的声明都是正确的

17、假设A类有如下定义,设a是A类的一个实例,下列语句调

用哪个是错误的?( C )

class A


本文标签: 方法 对象 变量