JAVA各章习题及答案 下载本文

class Student extends Person{ String sID;

public Student(String n,String s,int a,String sid){ super(n,s,a); sID = sid; }

void showID(){

System.out.println(\ }}

第6章

一、选择题

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.数组中每个元素的类型都是整数 【解析】数组元素的下标是从0开始的。

4.执行语句:int[] x = new int[20];后,下面哪个说法是正确的?( C ) A.x[19]为空 B.x[19]未定义 C.x[19]为0 D.x[0]为空 【解析】此语句定义了x数组后,x[0]~x[19]的值全部为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

21

【解析】同一个类的两个对象可以相互赋值,赋值后两个对象具有相同的存储空间,因此是相同的。

6.已知有定义:String s=\,下面哪个表达式正确?( A ) A.s += \ B.char c = s[1]; C.int len = s.length; D.String s = s.toLowerCase();

【解析】字符串对象可以执行“+=”运算,但不能用s[1]这种方式取其中的字符,也不能用length求它的长度,可以用length()求其长度,因此B、C不正确,不能再次定义s字符串,因此D不正确。 二、填空题

1. Object类 是所有类的直接或间接父类,它在 java.lang 包中。 2.System类是一个功能强大、非常有用的特殊的类,它提供了 标准输入/输出 、 运行时 系统信息等重要工具。这个类不能 实例化 ,即不能创建System类的对象,所以它所有的属性和方法都是 static 类型,引用时以类名System为前缀即可。

3.Applet由浏览器自动调用的主要方法 init , start , stop 和 destroy 分别对应了Applet从初始化、启动、暂停到消亡的生命周期的各个阶段 。

4.数组是一种 复合 数据类型,在Java中,数组是作为 对象 来处理的。数组是有限元素的有序集合,数组中的元素具有相同的 数据类型 ,并可用统一的 数组名 和 下标 来唯一确定其元素。

6.数组初始化包括 静态 初始化和 动态 初始化两种方式。 7.利用 System 类中的 arraycopy() 方法可以实现数组元素的复制;利用 Arrays 类中的 sort() 和 binarySearch() 方法可以实现对数组元素的排序、查找等操作。 8.Java语言提供了两种具有不同操作方式的字符串类: String 类和 StringBuffer 类。它们都是 java.lang.Object 的子类。 三、写出下列程序的运行结果 1.public class X6_3_1 {

public static void main(String[] args) { int a[]={12,39,26,41,55,63,72,40,83,95}; int i1=0,i2=0;

for(int i=0;i

System.out.println(i1+\ }

【运行结果】 6 4

2.public class X6_3_2 {

public static void main(String[] args) { int a[]={36,25,48,14,55,40,32,66}; int b1,b2; b1=b2=a[0];

for(int i=1;ib1 ){

if ( b1 >b2 ) b2=b1;

22

b1=a[i]; }

System.out.println(b1+\ } } 【运行结果】 66 55

3.public class X6_3_3 {

public static void main(String[] args) { int a[]={36,25,48,14,55,40,32,66 }; int b1,b2; b1=b2=a[0];

for (int i=1;i

if ( b1

System.out.println(b1+\ } }

【运行结果】 14 25

4.public class X6_3_4 {

public static void main(String[] args) { String str = \ char[] a =str.toCharArray(); int i1 =0, i2=0, i;

for(i=0;i

System.out.println(i1+\ }}

【运行结果】 4 3

5.public class X6_3_5 {

public static void main(String[] args) { String str =\ char[] a = str.toCharArray(); int b[] = new int[5],i; for(i=0;i

case 'a': b[0] ++; break; case 'b': b[1] ++; break; case 'c': b[2] ++; break; case 'd': b[3] ++; break;

23

default : b[4] ++; } }

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

System.out.print(b[i]+\ System.out.println(); } }

【运行结果】

4 3 2 2 3

6.public class X6_3_6 {

public static void main(String[] args) {

int a[] = {76,83,54,62,40,75,90,92,77,84}; int b[] = {60,70,90,101}; int c[]=new int[4],i;

for (i=0; i

while (a[i] >= b[j] ) j ++; c[j] ++; }

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

System.out.print(c[i]+\ System.out.println(); }

【运行结果】

2 1 5 2

四、编程题

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]+\ }

24