一周错题2(选择题)

1、如何将GBK编码字节流转换到UTF-8编码字节流?

先解码再编码。

先用new String(src, "GBK")解码得到字符串,再用getBytes("UTF-8")编码字节数组。

2、Java中的集合类包括ArrayList、LinkedList、HashMap等,下列关于集合类描述错误的是?

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

本题选C。

ArrayList 和 LinkedList 均实现List接口。ArrayList 插入和删除开销很大,除非在末端。而LinkedList 插入和删除开销都很小。

ArrayList 查询的时候,根据数组下表获取值,而LinkedList 则是前后迭代式获取,所以ArrayList 查询速度优于 LinkedList。

HashMap 可以用null值和空字符串作为K,不过只能有一个。

3、执行下列代码的输出结果是( )

public class Demo{
    public static void main(String args[]){
        int num = 10;
        System.out.println(test(num));
    } 
    public static int test(int b){
        try
            {
                b += 10;
                return b;
            } 
        catch(RuntimeException e)
            { } 
        catch(Exception e2)
            { } 
        finally
            {
                b += 10;
                return b;
            }
    }
}

结果是30.

如果finally中有return语句,它将覆盖掉函数中其他的return语句。

4、以下 _____ 不是 Object 类的方法

A clone()
B finalize()
C toString()
D hasNext()
Object() 中的方法有:clone()  equals()  finalize()  getClass()  hashCode()  notify()  notifyAll()  toString()  wait()

所以选D。

5、对文件名为Test.java的java代码描述正确的是()

class Person {
    String name = "No name";
    public Person(String nm) {
    name = nm;
    }
} 
class Employee extends Person {
    String empID = "0000";
    public Employee(String id) {
        empID = id;
    }
} 
public class Test {
    public static void main(String args[]) {
        Employee e = new Employee("123");
        System.out.println(e.empID);
    }
}

A 输出:0000
B 输出:123
C 编译报错
D 输出:No name
父类没有无参的构造方法,子类需要在自己的构造方法中显式调用父类的构造方法。所以这段代码会编译报错。

6、下列Java代码中的变量a、b、c分别在内存的____存储区存放。

class A {
    private String a = “aa”;
    public boolean methodB() {
        String b = “bb”;
        final String c = “cc”;
    }
}

a是类中成员变量,存放在堆区。

b、c是方法中的局部变量,存放在栈区。

7、代码片段:

byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);

关于上面代码片段叙述正确的是()
A 输出结果:13
B 语句:b6=b4+b5编译出错
C 语句:b3=b1+b2编译出错
D 运行期抛出异常

被final修饰的变量是常量,b6 = b4 + b5 可以看作 b6 = 10;b1 和 b2 是byte类型,Java中进行计算时将他们提升为int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过。byte、short、char进行计算时都会提升为int类型。

8、下面的方法,当输入为2的时候返回值是多少?

public static int getValue(int i) {
    int result = 0;
    switch (i) {
    case 1:
        result = result + i;
    case 2:
        result = result + i * 2;
    case 3:
        result = result + i * 3;
    } 
    return result;
}

A 0
B 2
C 4
D 10

switch 的穿透性,case 只是一个入口,没有break,会从入口将后面所有的case都执行一次。所以返回值为10.

9、下列关于Java并发的说法中正确的是()
A CopyOnWriteArrayList适用于写多读少的并发场景
B ReadWriteLock适用于读多写少的并发场景
C ConcurrentHashMap的写操作不需要加锁,读操作需要加锁
D 只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了

CopyOnWriteArrayList适用于写少读多的并发场景。

ReadWriteLock时读写锁,写与写之间互斥,读与写之间互斥,读与读之间可以并发执行,读多写少的情况下可以提高效率。

ConcurrentHashMap采用分段锁技术,读操作一般不加锁,写操作枷锁。

volatile保证内存可见性,无法保证原子性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值