java选择题

1.【问题】:已知如下类定义:

class Base {  
 public Base (){ 
 //... 
 }  
 public Base ( int m ){ 
 //... 
 }  
 public void fun( int n ){ 
 //... 
 } 
}  
public class Child extends Base{  
 // member methods  
}  

如下哪句可以正确地加入子类中?
A.private void fun( int n ){ //…}
B.void fun ( int n ){ //… }
C.protected void fun ( int n ) { //… }
D.public void fun ( int n ) { //… }
【答案】:D
【分析】:A,B,C都会提示如下信息:
Cannot reduce the visibility of the inherited method from Base 【不能降低从基类继承的方法的可见性。 】
每个子类的实例都应该是一个基类的有效实例,如果降低了方法的可见性,那么就相当于子类失去了一个父类的方法,这个时候,父类将不是一个有效的基类。
方法的重写(override)两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
2.【问题】:关于抽象类叙述正确的是? ( )
A.抽象类不能实现接口
B.抽象类必须有“abstract class”修饰
C.抽象类必须包含抽象方法
D.抽象类也有类的特性,可以被实例化
【答案】:B
【分析】:A.抽象类是可以实现接口的,而且抽象类也可以继承自抽象类
B.对
C.抽象类指有abstract修饰的class,其可以包含抽象方法,也可以不包含
D.抽象类和接口都是不能被实例化的,只有具体的类才可以被实例化
3.【问题】:下列程序的运行结果

public static void main(String args[]) {
    Thread t = new Thread() {
        public void run() {
            pong();
        }
    };
    t.run();
    System.out.print("ping");
}
static void pong() {
    System.out.print("pong");
}

A.pingpong
B.pongping
C.pingpong和pongping都有可能
D.都不输出
【答案】:B
【分析】:注意Thread的start和run方法
用start方法才能真正启动线程,此时线程会处于就绪状态,一旦得到时间片,则会调用线程的run方法进入运行状态。
而run方法只是普通方法,如果直接调用run方法,程序只会按照顺序执行主线程这一个线程。

4.【问题】:Math.round(11.5) 等于多少 (). Math.round(-11.5) 等于多少 ( ).
A.11 ,-11
B.11 ,-12
C.12 ,-11
D.12 ,-12
【答案】:C
【分析】:Math类中提供了三个与取整有关的方法:ceil,floor,round
ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11;
floor的英文是地板,该方法就表示向下取整,Math.floor(11.6)的结果是11,Math.floor(-11.4)的结果-12;
round方法,他表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果是12,Math.round(-11.5)的结果为-11.

5.【问题】:关于sleep()和wait(),以下描述错误的一项是( )
A.sleep是线程类(Thread)的方法,wait是Object类的方法;
B.sleep不释放对象锁,wait放弃对象锁
C.sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
D.wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态
【答案】:D
【分析】:Java中的多线程是一种抢占式的机制,而不是分时机制。
抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。
共同点 :
1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。
2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态,从而使线程立刻抛出InterruptedException。
如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join,则线程B会立刻抛出InterruptedException,在catch(){} 中直接return即可安全地结束线程。
需要注意的是,InterruptedException是线程自己从内部抛出的,并不是interrupt()方法抛出的。对某一线程调用 interrupt()时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出InterruptedException。但是,一旦该线程进入到 wait()/sleep()/join()后,就会立刻抛出InterruptedException 。
不同点 :
1.每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。
sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
2.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
3.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
4.sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
5.wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
5.【问题】:类的析构函数是一个对象被( )时自动调用的。
A.建立
B.撤销
C.引用
D.赋值
【答案】:B
【分析】:析构函数(destructor) 与 构造函数 相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。

6.【问题】:JUnit主要用来完成什么
A.发送HTTP请求
B.建立TCP连接
C.建立TCP连接
D.单元测试
【答案】:D
【分析】:JUnit是一个Java语言的单元测试框架,有程序员自测,就是所谓的白盒测试,主要四个方向 1、用于测试期望结果的断言(Assertion) 2、用于共享共同测试数据的测试工具 3、用于方便的组织和运行测试的测试套件 4、图形和文本的测试运行器

7.【问题】:以下java程序代码,执行后的结果是()

java.util.HashMap map=new java.util.HashMap();  
map.put("name",null);       
map.put("name","Jack"); 
System.out.println(map.size());

A.0
B.NULL
C.1
D.2
【答案】:C
【分析】:HashMap可以插入null的key或value,插入的时候,检查是否已经存在相同的key,如果不存在,则直接插入,如果存在,则用新的value替换旧的value,在本题中,第一条put语句,会将key/value对插入HashMap,而第二条put,因为已经存在一个key为name的项,所以会用新的value替换旧的vaue,因此,两条put之后,HashMap中只有一个key/value键值对。那就是(name,jack)。所以,size为1.

8.【问题】:下面哪个不是标准Statement类?
A.Statement

B.PreparedStatement

C.CallableStatement

D.BatchedStatement

【答案】:D
【分析】:Statement在JDBC中相当于SQL语句的载体

A,Statement是最基本的用法,采用字符串拼接的方式,存在注入漏

B,PreparedStatement对Statement中的SQL语句进行预编译,同时检查合法性,效
率高
C,CallableStatement接口扩展 PreparedStatement,用来调用存储过程,它提供了对输出和输入/输出参数的支持。CallableStatement 接口还具有对 PreparedStatement 接口提供的输入参数的支持。
D,是标准的Statement类

9.【问题】

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值