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保证内存可见性,无法保证原子性。