Java选择题

** 1.下面关于构造方法的说法不正确的是 (B)**
A 构造方法也属于类的方法,可以创建对象的时候给成员变量赋值
B 构造方法不可以重载
C 构造方法没有返回值
D 构造方法一定要和类名相同

解析:
1.构造方法也是类的方法,可以在创建对象时为成员变量赋值
2.构造方法可以进行重载,但是参数列表必须不相同,不以返回值和访问级别进行区分
3.构造方法没有返回值
4.构造方法一定要与定义为public的类同名

2.在异常处理中,以下描述不正确的有(D)
A try块不可以省略
B 可以使用多重catch块
C finally块可以省略
D catch块和finally块可以同时省略

解析:
用try-catch 捕获异常;
用try-finally 清除异常;
用try-catch-finally 处理所有的异常.
三者选一种即可

3.下列描述中,错误的是(C)
A SQL语言又称为结构化查询语言
B java中”static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问
C 面向对象开发中,引用传递意味着传递的并不是实际的对象,而是对象的引用,因此,外部对引用对象所做的改变不会反映到所引用的对象上
D java是强类型语言,javascript是弱类型语言
E 面向对象的三大特性包括:封装,继承,多态

解析:
值传递,传递的是原来值的副本。
引用传递,除了一些特殊的(String,包装类属于不可变类),一般的引用类型在进行传递的时候,一开始形参和实参都是指向同一个地址的,这个时候形参对对象的改变会影响到实参。

4.程序读入用户输入的一个值,要求创建一个自定义的异常,如果输入值大于10 ,使用throw语句显式地引发异常,异常输出信息为”something’ swrong!" ,语句为( A)
A.if(>10)throw new Exception(“something’ swrong!”;
B. if(i>10)throw Exception e(“something’ swrong!”);
C. if(i>10) throw new Exception e(“something’ swrong!”);
D. if(i>10)throw Exception( “something’ swrong!”;

解析:
throw是语句抛出异常,有两种用法:
抛出异常e实例或新的Exception实例
1.catch中的throw e;
2.方法体中的throw new Exception();
区别如下: throw e是将已经catch到的e重新抛出,而throw new Exception()是重新生成一个Exception类的对象并抛出。有两点重要区别,第一e中记录了原异常的信息,如除零异常的信息,而new Exception()是一个新对象,当中不包含任何有用的信息;第二e可能存在向上转型,即e的实际类型可能是Exception的子类,而new Exception()就是Exception类的对象。

5.以下关于集合类 ArrayList 、 LinkedList 、 HashMap 描述错误的是:(C)

A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值
B ArrayList和LinkedList均实现了List接口
C 添加和删除元素时,ArrayList的表现更佳
D ArrayList的访问速度比LinkedList快

解析:
A、HashMap实现了Map接口的,它的Key和Value都可以是null,但是Hashtable种,Key和Value都不能是null。
B、ArrayList与LinkedList都实现了List接口,继承了AbstractList类。
C、ArrayList底层是动态数组是实现,随机位置添加和删除,都需要移动数组的数据,而LinkedList底层是双向链表,只需要修改Node节点的引用。
D、随机访问数组要比链表块。

6.关于 Java 线程,下面说法错误的是(C)。
A 创建线程可以通过实现Runnable接口和继承Thread类
B java利用线程使整个系统成为异步
C 新线程一旦被创建,它将自动开始运行

解析:
A、创建线程有三个方式:继承Thread类,实现Runnable,实现Callable
B、同步说的是必须等待一个事情完了才能去干另一间事情,异步说的是不需要停下来一直等待一个事件结束,我在等待的过程中还可以进行别的事情。这个东西在Callable中call方法返回一个Future体现的淋漓尽致。
C、线程创建时start方法,线程处于Runnable,线程只有run方法执行,才进入Running。

7.下列关于栈叙述正确的是(D )。
A算法就是程序
B设计算法时只需要考虑数据结构的设计
C设计算法时只需要考虑结果的可靠性
D以上三种说法都不对

解析:
算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。

8.java语言的下面几种数组复制方法中,哪个效率最高?
A for 循环逐一复制
B System.arraycopy
C Array.copyOf
D 使用clone方法

解析:
(1)从速度上看:System.arraycopy > clone > Arrays.copyOf > for
(2)for的速度之所以最慢是因为下标表示法每次都从起点开始寻位到指定下标处(现代编译器应该对其有进行优化,改为指针),另外就是它每一次循环都要判断一次是否达到数组最大长度和进行一次额外的记录下标值的加法运算。
(3)Arrays.copyOf本质上是调用了System.arraycopy。之所以时间差距比较大,是因为很大一部分开销全花在了Math.min函数上了。
(4)System.arraycopy实质上是通过Jni调用本地方法,及c/c++已经编译成机器码的方法,所以快。

9.关于 Socket 通信编程,以下描述错误的是:( D)
A 服务器端通过new ServerSocket()创建TCP连接对象
B 服务器端通过TCP连接对象调用accept()方法创建通信的Socket对象
C 客户端通过new Socket()方法创建通信的Socket对象
D 客户端通过new ServerSocket()创建TCP连接对象

10.下面的程序编译运行后,在屏幕上显示的结果是( )

public class test {
public static void main(String argsQ) {
int x,y;
x=5>>2;
y=x>>>2;
System.out.println(y);

A.0
B.2
C.5
D. 80
解析:


>>表示带符号右移; >>>无符号右移, 左边空出的位以0填充。

5的二进制是0101。
x=5>>2 (>>带符号右移)
将0101右移2位,为:0001。
y=x>>>2(>>>无符号右移,左边空缺补充为0)
将0001右移2位,补0。结果为:0000。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值