4-选择题练手

1.在Java中,以下关于方法重载和方法重写描述正确的是
A. 方法重载和方法的重写实现的功能相同
B. 方法重载出现在父子关系中,方法重写是在同一类中
C. 方法重载的返回值类型必须一致,参数项必须不同
D.方法重写的返回值类型必须相同或相容
答:D
析:
2.下列哪些语句关于内存回收的说明是正确的
A. 程序员必须创建一个线程来释放内存
B.内存回收程序负责释放无用内存
C. 内存回收程序允许程序员直接释放内存
D. 内存回收程序可以在指定的时间释放内存对象
答:B
析:
A. 程序员不需要创建线程来释放内存
C. 也不允许程序员直接释放内存
D. 不一定在什么时刻执行垃圾回收
3.在 java 中 , 以下__类的对象以键 - 值的方式存储对象
A. java,util.List
B. java,util.ArrayList
C.java,util.HashMap
D. java,util.LinkedList
答:C
析:
Map以key-value形式保存,HashMap、HashTable继承自Map
ArrayList底层以数组方式存储
LinkedList以链表形式存储
4.下列说法正确的是
A. 形式参数可被字段修饰符修饰
B. 形式参数不可以是对象
C. 形式参数为方法被调用时真正被传递的参数
D. 形式参数可被视为local variable
答:D
析:
A.对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器报错,但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改,所以一般情况下,一个方法的形参不用final修饰
B.形参可以是对象,如果形参是对象,那么形参里面存储的就是对象的引用
C.真正被传递的是实参的值,而不是形参
D.local variable代表的含义是局部变量
5.以下语句的执行结果是什么
1+”10”+3+”2”
A.”11032”
B. “16”
C. 16
D. “32101”
答:A
析:在遇到string类型之前,int间使用“+”还是表示数值的相加,但是遇到第一个string后,后面就都是按string类型来了,变成字符串的拼接。
6.A派生出子类B,B派生出子类C,并且在java源代码中有如下声明,以下哪个说法是正确的
A a0 = new A();
A a1 = new B();
A a2 = new C();
A. 第1行,第2行和第3行的声明都是正确的
B. 第1,2,3行都能通过编译,但第2,3行运行时出错
C. 第1,2行能通过编译,但第3行编译出错
D. 只有第1行能通过编译
答:A
析:
Java虽然是单继承,但是继承具有传递性(间接继承)。
C继承B,B继承A,用子类对象实例给父类类型引用赋值,会进行自动转型。
比如:所有的类都是Object类的子类。Object obj = new everything();
7.在 Java 7 中,下列哪个说法是正确的
A. ConcurrentHashMap 使用 synchronized 关键字保证线程安全
B. HashMap 实现了 Collection 接口
C. Arrays.asList 方法返回 java.util.ArrayList 对象
D. SimpleDateFormat 对象是线程不安全的
答:D
析:
A.hashMap在单线程中使用大大提高效率,在多线程的情况下使用hashTable来确保安全.
hashTable中使用synchronized关键字来实现安全机制,但是synchronized是对整张hash表进行锁定即让线程独享整张hash表,在安全同时造成了浪费;
ConcurrentHashMap使用的是Segement(继承自 ReentrantLock )采用分段加锁的机制来确保安全.
B.HashMap实现的是Map接口.

C.Arrays.asList方法返回List列表, public static <T> List<T> asList (T... a);Arrays.asList()将一个数组转化为一个List对象,这个方法返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。

D.SimpleDateFormat查看Java源码可以看到,它的方法都不是Synchronized的,也没有采用其他的同步措施.

8.给定代码,第三行将输出什么

public class SwitchTest{ //1
   public static void main(String[] args) {//2
       System.out.println("value=" + switchit(4));//3
   } //4

   public static int switchit(int x) {
       int j = 1;
       switch (x) {
          case 1 : j++;
          case 2 : j++;
          case 3 : j++;
          case 4 : j++;
          case 5 : j++;
          default : j++;
       }
       return j + x;
   }
}
A.value=6
B. value=8
C. value=3
D. value=5
E. value=4
答:B
析:switch代码块中没有break,从case 4开始一直执行到最后,j自加3次变成了4,结果返回8。
9.关于以下程序段,正确的说法是
String s1="abc"+"def";//1
String s2=new String(s1);//2
if(s1.equals(s2))//3
   System.out.println(".equals succeeded");//4
if(s1==s2)//5
   System.out.println("==succeeded");//6
A. 行4,行6都不执行
B. 行6执行,行4不执行
C.行4执行,行6不执行
D. 行4,行6都将执行
答:C
析:equals()比较的是字符串的内容,==比较的是内存地址值。

10.Java 多线程有几种实现方法
A. 继承Thread类
B. 实现Runnable接口
C. 实现Thread接口
D. 以上都不正确
答:AB
析: java多线程实现方式主要有三种:继承 Thread类、实现 Runnable接口、使用 ExecutorServiceCallableFuture实现有返回结果的多线程。
 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值