Java 选择题及答案解析 - 集合、循环、继承等知识点
- 给定如下Java代码,其中第()行代码有错误。
import java.util.*;
public class ListTest{
public static void main(String []args){
List pList=new ArrayList();
pList.add('A'); //第五行
pList.add('B'); //第六行
for(int i=0;i<pList.size();i++){ //第七行
String str=pList.get(i); //第八行
System.out.print(str);
}
}
}
A. 五 B. 六 C. 七 D. 八
答案:A
解析: 第五行的代码 pList.add('A'); 应该改为 pList.add('A');,因为 pList 是一个 List 对象,它只能存储对象类型,而 'A' 是一个字符串,应该用单引号将其转换为字符类型。
- 在Java中,LinkedList类和ArrayList类同属于集合框架类,下列( )选项中的方法是LinkedList类有而ArrayList类没有的。 A. add(Object o) B. add(int index,Object o) C. remove(Object o) D. removeLast()
答案:D
解析: removeLast() 方法是 LinkedList 类特有的方法,它用于删除链表的最后一个元素。ArrayList 类没有这个方法,因为它是一个基于数组的列表,没有最后一个元素的概念。
- 在java中,下列选项可以存储无序、不重复的数据的是() A. ArrayList B. LinkedList C. HashMap D. Set
答案:D
解析: Set 接口定义了集合中元素无序且不重复的特性。ArrayList 和 LinkedList 都是有序列表,可以存储重复元素;HashMap 是一个键值对映射,虽然键不能重复,但值可以重复。
- 执行以下JAVA代码,正确的输出结果是()。
public class Test{
public static void main(String []args){
List<String> list = new ArrayList<String>();
list.add('JAVA');
list.add('.NET');
list.add('Android');
list.remove(1);
System.out.println(list.get(1));
}
}
A. JAVA B. .NET C. Android D. 空指针异常
答案:C
解析: list.remove(1) 删除了索引为 1 的元素('.NET'),所以 list.get(1) 返回的是索引为 1 的元素 'Android'。
- 编译运行下列JAVA代码,输出结果正确的是()。
import java.util.*;
public class ListTest{
public static void main(String []args){
List list = new ArrayList();
list.add('a');
list.add('b');
list.add('c');
list.remove(1);
Iterator it=list.iterator();
while(it.hasNext()){
String str = it.next();
System.out.print(str);
}
}
}
A. ab B. bc C. ac D. 编译错误
答案:A
解析: 代码首先添加了三个元素 'a'、'b'、'c',然后删除了索引为 1 的元素 'b',最后用迭代器遍历列表,输出结果为 'a' 和 'c',即 'ab'。
- 下面List与Set集合的区别说法不正确的是( ) A. List中的元素可重复,有序 B. Set集合中的元素不可重复,有序 C. List中的元素可以通过下标访问 D. Set集合中的元素不可重复,无序
答案:B
解析: Set 集合中的元素是无序的,元素不能重复。List 集合中的元素是有序的,可以重复。
- 下面关于集合的概念说法错误的是( ) A. 集合中可以存储不限数量的元素 B. 集合中可以存储不同类型的元素 C. 集合中可以存储基本数据类型 D. 集合中在仅可以存储引用数据类型
答案:C
解析: 集合中不能直接存储基本数据类型,但可以存储基本数据类型的包装类,例如 Integer、Double 等。
分析下面的Java程序:
public static void main(String args[]) {
int num = 0;
while(num <= 2){
num++;
System.out.print(num);
}
}
- 输出结果是 A 13 B 12 C 023 D 123
答案:D
解析: 代码中,num 的初始值为 0,循环条件为 num <= 2,每次循环 num 加 1 并输出,所以输出结果为 1、2、3,即 '123'。
- 在Java中,调用Math.random() 方法可能返回的结果是()。 A 132.34 B 0.342 C 29.34E10 D 1.0009
答案:B
解析: Math.random() 方法返回一个大于等于 0.0 且小于 1.0 的随机数。
- 已知
class A{
public static int v = 1;
public void fn() {}
}
class B extends A{
public static int v = 2;
public void fn() {}
public void fn1() {}
}
下列说法正确的是() A 类B中的fn与类A中的fn冲突了,会报错 B 类B中的v和类A中的v冲突了,会报错 C A a =new B(); a.fn1()调用会报错 D A a = new B(); a.v的值是2;
答案:D
解析: 类 B 中的 fn 方法和类 A 中的 fn 方法没有冲突,因为它们是同一个方法,只是在子类中被重写了。类 B 中的 v 和类 A 中的 v 是不同的,因为它们是在不同的类中定义的。A a = new B(); 创建了一个 B 类的对象,并将其赋给 A 类的引用 a,所以 a.v 的值为 2。a.fn1() 的调用也不会报错,因为 B 类继承了 A 类,所以 B 类的对象可以使用 A 类的方法,包括 fn1() 方法。
原文地址: https://www.cveoy.top/t/topic/n6Iq 著作权归作者所有。请勿转载和采集!