JAVA习题3参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题三参考答案
一、判断题
1.错2.对3.对4.对5.对6.错7.错8.错
【解释】
第6和8题:这两题考查枚举类型的定义。在Java中,创建枚举类型的主要目的是为了定义一些枚举常量。枚举类型不能定义方法,也不能通过new创建实例对象。
二、选择题
1.A 2.D 3.C 6.C 7.D
8.C 9.B 10.C 11.B 12.C
13.B 14.A 15.A 16.D 17.BD
18.B 19.A 20.B 21.D 22.B
23.C 24.B 25.A 26.B 27.B
【解析】
✧第6题;本题考查字符串String方法的应用。字符串String是一种内容不可
变对象的类,一旦创建后,不能改变它的值。本题第4行表达式语句执行的结果是DE,但字符串变量str本身的值没变,还是ABCDE;同理,第5行表达式语句执行的结果是ABCDEXYZ,但字符串变量str本身的值还是ABCDE。本题选C。
✧第7题:本题考查二维数组的创建。二维数组可以看成是一维数组的数组,
可以直接为每一维分配空间,也可以从最高维开始,分别为每一维分配空间,创建以数组为元素的数组,即二维数组的每一行可以具有不同的列数。因此,选项B是合法的,而选项D由于最高维没定义,不合法。
✧第9题:本题考查数组和字符串作为参数传递给方法调用。数组也是引用类
型,作为参数传递给方法调用时,在方法中可修改数组中的元素值。而字符串String是特殊的引用类型,不能改变它本身的值。因此,本题选B。
✧第14题:本题考查字符串String对象的内存存储机制和“==”运算。第3~
6行的s1.s2和s3的引用地址都是字符串池中”123456”的内存地址;第7行,由于“+”运算中有一个操作数是变量a0,无法在编译中直接完成“+”运算,所以s4的引用地址不在字符串池中;第8行,用new新创建了一个字符串对象,s5的引用地址也不在字符串池中;第9行,s5调用了调用intern方法,该方法的作用是如果池已经包含一个等于此String对象的字符串,则返回池中的字符串,否则,将此String对象添加到池中,并返回此String对象的引用,所以s6的引用地址也是字符串池中”123456”的内存地址。对引用对象做“= =”运算时,若引用对象的地址相同,则返回true,否则返回false。因此,本题选A。
✧第15题:本题考查StringBuffer类的方法length和capacity。StringBuffer类
的方法length是返回StringBuffer对象中字符串的长度,而方法capacity是返
回StringBuffer对象可存放字符串的容量大小。声明语句"StringBuffer bufl=new StringBuffer(20);”的内容为空字符串,容量大小为20。因此,本题选A。
✧第18题:本题考查对象数组的创建。语句"String[]s=new String[10];”执行
后,创建了一个字符串数组对象s,数组长度为10,但数组中的所有内容都是null。选项A的s[10]超出数组的范围了,选项D数组的长度应该是s.1ength。所以本题选B。
✧第20题:本题考查“==”运算和字符串equals方法。选项A中“==”运算
的左右两边的操作数都是字符串常量,返回true;选项B,equals方法比较的是不同的对象,返回false;选项C和D,equals方法比较的都是字符串对象,字符串对象中的内容相同,都返回true。因此,本题选B。
三、程序阅读题
1.(1)arraySum方法的功能是返回整型数组中所有元素的和。
(2)运行结果是100。
2.春季,夏季,秋季,冬季,
3.java
iavaC
Yava
四、编程题
1.现在有两个双精度浮点型的数组如下:
double xs [] = {1, 9, 3, 5, 6};
double ys[]={10,11,4,7,13};
又有一个长方形的数组Rectangle rects[ ]=new Rectangle[25];
要求:用Rectangle的构造方法给rects数组的每个元素赋值,长和宽分别为xs和ys的元素;然后按照面积由小到大给rects排序。请编写它的程序。
【解】
public class Rectangle {
double x, y;
public Rectangle(double x, double y) {
this.x = x;
this.y = y;
}
public double getArea() {
return x * y;
}
public String toString() {
return "(" + x + "," + y + ")";
}
public static Rectangle[] areaSort(Rectangle[] args){ //排序算法for (int i=0;i int min=i; for (int j=i+1;j if ( args[min].getArea()>args[j].getArea()) min=j; } if (min!=i){ Rectangle temp=args[i]; args[i]=args[min]; args[min]=temp; } } return args; } public static void main(String args[]) { double xs[] = { 1, 9, 3, 5, 6 }; double ys[] = { 10, 11, 4, 7, 13 }; Rectangle rects[] = new Rectangle[25]; for (int i = 0; i < 5; i++) //构造对象数组 for (int j = 0; j < 5; j++) rects[5 * i + j] = new Rectangle(xs[i], ys[j]); for ( Rectangle obj: rects) //输出面积 { System.out.print( obj.getArea()+"," ); } Rectangle.areaSort(rects); System.out.print("\n"); for ( Rectangle obj: rects) //输出面积 { System.out.print( obj.getArea()+"," ); } } }