您的位置:首页 > 职场人生

面试笔试题1000:Java基础

2017-02-01 20:14 274 查看

1 .”==”和equals方法有什么区别?

答:==是运算符,equals是方法,方法可以通过重写改变其行为,如String的equals就是比较字符串内容。

2 . switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

答: 在Java7之前,switch只能支持 byte、short、char、int或者其对应的封装类以及Enum类型,在Java7中可以支持String。

3 . Integer与int的区别?

答:Integer为包装类,int是基本数据类型。包装类拥有方法和属性,基本数据类型不具备。包装类可以通过intValue来转换成基本数据类型,也可以通过new Integer()将基本数据类型转换为包装类。在JDK1.5后,包装类和基本数据类型可以实现自动转换。

4.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

答: finally在return之前执行。

5.final, finally, finalize的区别。

final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,无论是否异常该部分代码总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法。

6.ArrayList、Vector、LinkedList的存储性能和特性?

ArrayList和Vector都是使用数组方式存储数据,索引数据快而插入/删除数据慢;Vector相对ArrayList是线程安全的,所以性能要低一些;而LinkedList使用双向链表实现存储,插入/删除数据快而索引数据慢。

7.如何对List进行排序?

使用java.util.Collections的sort静态方法。一种方法是传入一个Comparator对象,另一种方法是List中的对象实现Comparable。

例子:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Main {

//String转Int 比较
static class Str2IntComparator implements Comparator<String> {
//true为倒序,false为顺序
private boolean flag;
public Str2IntComparator(boolean flag) {
this.flag = flag;
}
public int compare(String str1, String str2) {
if(flag) {
return Integer.parseInt(str1) - Integer.parseInt(str2);
} else {
return Integer.parseInt(str1) - Integer.parseInt(str2);
}
}
}
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1001");
list.add("1002");
list.add("1003");
list.add("1");
list.add("2");
list.add("3");
list.add("11");
list.add("12");
list.add("13");

System.out.println("当前顺序...");
System.out.println(list);

Collections.sort(list);
System.out.println("默认排序后...");
System.out.println(list);

Collections.sort(list, Collections.reverseOrder());
System.out.println("倒序后...");
System.out.println(list);

Collections.sort(list, new Str2IntComparator(false));
System.out.println("按整型排序后...");
System.out.println(list);

Collections.sort(list, new Str2IntComparator(true));
System.out.println("按整型倒序后...");
System.out.println(list);
}
}


测试:



8.synchronized和java.util.concurrent.locks.Lock的异同?

两者功能类似,都是用来控制线程同步。Lock能完成synchronized所实现的所有功能。Lock需要在finally代码中释放锁,synchronized会自动释放锁。

9.sleep() 和 wait() 有什么区别?

sleep是线程类(Thread)的方法,传入参数是毫秒数,线程暂停休眠一段时间,到时后会自动恢复,sleep不会释放对象锁。

wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁并等待,只有此对象调用notify或notifyAll后本线程才再次获得对象锁,并运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: