Java日常刷题第十二天,错题练习

选择题
1。在某个类A中存在一个方法:void set(int x),以下不能作为这个方法的重载的声明的是(A)
A.void set(int y)
B.int set(int x,double y)
C.double set(int x,int y)
D.void set(int x,int y)
解析:方法重载:方法名称相同,参数列表不同(可以是参数的类型,个数,顺序不同)
2.已知如下类定义:

class Base {
public Base (){
//…
}
public Base ( int m ){
//…
}
public void fun( int n ){
//…
}
}
public class Child extends Base{
// member methods
}
如下哪句可以正确地加入子类中?(D)
A.private void fun( int n ){ //…}
B.void fun ( int n ){ //… }
C.protected void fun ( int n ) { //… }
D.public void fun ( int n ) { //… }
解析:方法的重写(override)两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
3.下面代码的输出结果是什么?(D)

public class ZeroTest {
public static void main(String[] args) {
try{
int i = 100 / 0;
System.out.print(i);
}catch(Exception e){
System.out.print(1);
throw new RuntimeException();
}finally{
System.out.print(2);
}
System.out.print(3);
}
}
A. 3
B.123
C.1
D.12
解析:还是需要理解Try…catch…finally与直接throw的区别:try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了。本题的catch语句块里面,打印完1之后,又抛出了一个RuntimeException,程序并没有处理它,而是直接抛出,因此执行完finally语句块之后,程序终止了
如果catch中没有抛出RuntimeException,则执行结果为123。
4.一个以“.java”为后缀的源文件(C)
A。只能包含一个public类,类名必须与文件名相同
B.只能包含与文件名相同的public类以及其中的内部类
C.只能有一个与文件名相同的public类,可以包含其他非public类(不考虑内部类)
D.可以包含任意public类
解析:内部类是可以public修饰的,所以不只有一个public类
5.在jdk 1.7中,以下说法正确的是( A )。
A.Java中所有的非抽象方法都必须在类内定义
B.Java中主方法可以不在类内定义,其他方法都必须定义在类内
C.Java中主方法必须定义在类内,其他方法可以不必定义在类内
D.Java中所有方法都不必在类内定义
解析:

Java是纯粹的面向对象语言,所有的方法都必须存在于类中。类才有封装,继承,多态的特性。 在一些非纯粹的面向对象语言中,如PHP,定义的方法是可以脱离类而单独存在的。 <?php function a(){ echo “hello world”; } a(); >
6.容器panel缺省使用的布局编辑策略是( B)
A.Border Layout
B.Flow Layout
C.GridLayout
D.Card Layout
解析:GUI PANEL 容器以及布局管理器 Panel是AWT中的另一个典型的容器,它代表不能独立存在、必须放在其他容器中使用。 1、可作为容器来盛装其他组件,为放置组件提供空间。 2、不能单独存在,必须放置到其他容器当中。 3、默认使用FlowLayout作为布局管理器。
7.面向对象的三个基本元素是什么?(ABD)
A封装
B继承
C重载
D多态
解析:三个基本元素:封装,继承,多态。
五个基本原则:单一职责原则,开放封闭原则,里氏替换原则,依赖倒置原则,接口隔离原则
8.不能用来修饰interface的有(ACD )(仅限外部接口)
A.private
B.public
C.protected
D.static
9:下列有关JAVA异常处理的叙述中正确的是(ABD)
A.finally是为确保一段代码不管是否捕获异常都会被执行的一段代码
B.throws是用来声明一个成员方法可能抛出的各种非运行异常情况
C.final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承
D.throw是用来明确地抛出一个异常情况
解析:throws用于在方法上声明该方法不需要处理的异常类型,用在方法上后面跟异常类名 可以是多个异常类
throw用于抛出具体异常类的对象,用在方法内 后面跟异常对象只能是一个异常类型实体.
try块必须和catch块或和finally同在,不能单独存在,二者必须出现一个.
finally块总会执行,不论是否有错误出现.但是若try语句块或会执行的catch语句块使用了JVM系统退出语句,finally块就不会被执行了. 一般我们把关闭资源的代码放在finally里面 保证资源总是能关闭
然后再看这一题 A肯定对了,C根本就跟异常处理没有关系,所以不选。就算有关系也错了

final用于声明属性、方法、类。分别表示属性不可更改、方法不能被覆盖、类不能被继承。

所以C选项说方法不能被继承错误,是不能覆盖

B、D咬文嚼字说是因为

B. throws是用来声明一个成员方法可能抛出的各种异常情况.
10.下面几个关于Java里queue的说法哪些是正确的(AC)?
A.LinkedBlockingQueue是一个可选有界队列,不允许null值
B.PriorityQueue,LinkedBlockingQueue都是线程不安全的
C.PriorityQueue是一个无界队列,不允许null值,入队和出队的时间复杂度是O(log(n))
D.PriorityQueue,ConcurrentLinkedQueue都遵循FIFO原则
解析:1、LinkedBlockingQueue:基于链接节点的可选限定的blocking queue 。 这个队列排列元素FIFO(先进先出)。 队列的头部是队列中最长的元素。 队列的尾部是队列中最短时间的元素。 新元素插入队列的尾部,队列检索操作获取队列头部的元素。 链接队列通常具有比基于阵列的队列更高的吞吐量,但在大多数并发应用程序中的可预测性能较低。
blocking queue说明:不接受null元素;可能是容量有限的;实现被设计为主要用于生产者 - 消费者队列;不支持任何类型的“关闭”或“关闭”操作,表示不再添加项目实现是线程安全的;

2、PriorityQueue:
2.1、基于优先级堆的无限优先级queue 。 优先级队列的元素根据它们的有序natural ordering ,或由一个Comparator在队列构造的时候提供,这取决于所使用的构造方法。 优先队列不允许null元素。 依靠自然排序的优先级队列也不允许插入不可比较的对象(这样做可能导致ClassCastException )。
2.2、该队列的头部是相对于指定顺序的最小元素。 如果多个元素被绑定到最小值,那么头就是这些元素之一 - 关系被任意破坏。 队列检索操作poll , remove , peek和element访问在队列的头部的元件。
2.3、优先级队列是无限制的,但是具有管理用于在队列上存储元素的数组的大小的内部容量 。 它始终至少与队列大小一样大。 当元素被添加到优先级队列中时,其容量会自动增长。 没有规定增长政策的细节。
2.4、该类及其迭代器实现Collection和Iterator接口的所有可选方法。 方法iterator()中提供的迭代器不能保证以任何特定顺序遍历优先级队列的元素。 如果需要有序遍历,请考虑使用Arrays.sort(pq.toArray()) 。
2.5、请注意,此实现不同步。 如果任何线程修改队列,多线程不应同时访问PriorityQueue实例。 而是使用线程安全的PriorityBlockingQueue类。
实现注意事项:此实现提供了O(log(n))的时间入队和出队方法( offer , poll , remove()和add ); remove(Object)和contains(Object)方法的线性时间; 和恒定时间检索方法( peek , element和size )。

3、ConcurrentLinkedQueue:基于链接节点的无界并发deque(deque是双端队列) 。 并发插入,删除和访问操作可以跨多个线程安全执行。 A ConcurrentLinkedDeque是许多线程将共享对公共集合的访问的适当选择。像大多数其他并发集合实现一样,此类不允许使用null元素。

猜你喜欢

转载自blog.csdn.net/yangyuCISCO/article/details/83549092