1.正确描述如下类和类关系的选项是()
"Man has a best friend who is a Dog"
A.class Man extends Dog { }
B.class Man implements Dog { }
C.class Man { private BestFriend dog; }
D.class Man { private Dog bestFriend; }
E.class Man { private Dog<bestFriend>; }
F.class Man { private BestFriend<dog>; }
正确答案:D
解析:
原意为:我有一个好朋友,它是一条狗;包含关系;而这好朋友是抽象的意思
A:extens是继承关系,人类继承狗,这明显不对;
B:implements是接口,定义规则;而人类实现一个狗的接口,这也明显不对;
C:这句的解析为:我有一个朋友,叫狗;而这朋友具体化了,所以也不对;
D:我有一条狗,它是我好朋友;这朋友也是抽象化,符合题意;
E:Dog
F:跟上述一样,我的好朋友的类型是狗,不对。
2.
Given:
class Mammal{ }
class Raccoon extends Mammal{
Mammal m = new Mammal();
}
class BabyRaccoon extends Mammal{}
Which four statements are true(Choose four)
A.Raccoon is-a Mammal.
B.Raccoon has-a Mammal.
C.BabyRaccoon is-a Mammal.
D.BabyRaccoon is-a Raccoon.
E.BabyRaccoon has-a Mammal.
F.BabyRaccoon is-a BabyRaccoon.
正确答案:ABCD
解析:
问:有四个正确选项,我却漏选了一个,这是一个失误;
A:Raccoon继承Manmmal,is a是继承实现的意思,所以正确;
B:Raccoon有一个Mammal,has a是有一个的意思;Raccoon其中有一个Mammal的对象,所以正确;
C:BabyRaccoon继承Mammal,is a 是继承实现的意思,所以正确;
D:BabyRaccoon不继承Raccoon,所以错误
E:BabyRaccoon有一个Mammal,BabyRaccoon中并没有Mammal的对象,所以错误
F:BabyRaccoon继承BabyRaccoon,自己继承自己,有这个关系,所以正确
3.
Given:
class Alpha{
public void foo(){
System.out.print("Afoo");
}
}
public class Beta extends Alpha{
public void foo(){
System.out.print("Bfoo");
}
public static void main(String[] args){
Alpha a = new Beta();
Beta b = (Beta)a;
a.foo();
b.foo();
}
} 2 Points
A.Afoo Afoo
B.Afoo Bfoo
C.Bfoo Afoo
D.Bfoo Bfoo
E.Compilation fails
F.An exception is thrown at runtime
正确答案:D
解析:
Alpha类包含foo方法,而Beta继承了Alpha类,Bete中也有一个foo方法,所以子类Beta重写了父类Alpha的方法;在主方法中,父类的对象引用了子类的对象,这是多态的特性,那么调用的是子类重写父类的方法,即为Bfoo;而a又被造型回了子类,那么子类调用的即为自己的方法,即为Bfoo;所以正确答案为D。
4.如下哪些语句编译无错误()
A.Byte b = new Byte("123");
B.Byte b = new Byte(123);
C.Byte b = new Byte();
D.Byte b = new Byte((int)123.4);
E.Byte b = new Byte(0x123);
正确答案:A
解析:
Byte对象,底层只有构造方法可以调用,一个带参的String构造方法,一个带参的本身构造方法,由此可见,只有A才是正确的。
5.以下选项中,关于int和Integer的说法错误的是()
A.int是基本数据类型,Integer是int的包装类,是引用数据类型
B.int的默认值是0,Integer的默认值也是0
C.Integer可以封装属性和方法,提供更多的功能
D.Integer i=5;该语句在JDK1.5之后可以正确执行,使用了自动拆箱功能
正确答案:BD
解析:
B:int的默认值是0,而Integer的默认值是null,因为Integer是int的包装类,是引用数据类型。
D:自动拆箱功能是JDK1.5之后才开始有自动装箱和自动拆箱功能;但是Integer这个是自动装箱功能。
6.分析如下Java代码,该程序编译后的运行结果是()
public static void main(String[] args){
String str = null
str.concat("abc");
str.concat("def");
System.out.println(str);
}
A.null
B.abcdef
C.编译错误
D.运行时出现NullPointerException
正确答案:D
解析:
这题本不应该错误。
String为空,但是不能点函数。
如果String为空字符串,那么也不行,String的特性其中之一就是不可变性,这个特性在于字符串的内容和长度上,所以更改内容时,需要重新赋值回原字符串,相当于将新的内容引用到原字符串的位置。
7.关于迭代器说法错误的是()
A.迭代器是取出集合元素的方式
B.迭代器的hasNext()方法返回值是boolean类型
C.List集合和Set集合均可以获取迭代器
D.迭代器的next方法将返回集合中的上一个元素
a—>d
正确答案:D
解析:迭代器的next方法将返回集合中的当前元素。
8.若使用TreeSet集合来存储元素,该元素必须()
A.实现Comparable接口
B.有main方法
C.有get和set方法
D.实现Serializable接口
c—>a
正确答案:A
解析:
Tree是继承Comparable接口来的,而Set是无序无重复的,所以存储元素,则需要规则,所以需要实现Comparable接口。
9.下列关键字不能单独使用,必须与try一起使用的有
A.final
B.finally
C.catch
D.finalize
正确答案:BC
解析:
A:final是最终的,不可更改的,能修饰数据、方法参数、类、方法,与try无关;
BC:是搭配try一起使用的关键字,
D:finalize()方法中一般用于释放非Java 资源,与try无关。
10.以下关于JAVA语言异常处理描述正确的有?()
A.throw关键字可以在方法上声明该方法要抛出的异常
B.throws用于抛出异常对象
C.try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句
D.finally语句块是不管有没有出现异常都要执行的内容
E.在try块中不可以抛出异常
c—>d
正确答案:D
解析:
AB:说反了,throws才是可以在方法上声明该方法要抛出的异常,throw用于抛出异常对象;
C:如果有异常,不抛出,直接执行catch语句;
E:在try中是可以抛出异常的。
9.关于异常的编程,以下描述错误的是()
A.在有除法存在的代码处,为了防止分母为零,必须抛出并捕获异常
B.int i = Integer.parseInt(“123a”);将产生NumberFormatException
C.int a[] = null; a[0] = 1;将产生NullPointerException
D.输入输出流编程中,读和写时都要抛出IOException
b—>a
正确答案:A
解析:
不是必须。
总结:
1.进度还是有些赶不上。
2.对最基础的有些东西还是了解的不够深,印象不是很深刻。
3.对底层的代码运行还是看的太少。
解决办法:利用碎片化时间来学习课程加快课程的进度,多看看底层代码,有规划的复习之前的基础知识。