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
版权声明:本文标题:java程序设计试题库 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1735625341a1682277.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论