面试笔试题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后本线程才再次获得对象锁,并运行。
相关文章推荐
- JAVA -- JAVA基础笔试、面试常见问题集合
- Java基础面试笔试整理之一
- java基础:常见的概念问题,面试笔试可能会遇到哟
- 2017最新Java基础面试笔试知识整理--java基础篇
- Java面试笔试知识点之基础部分2
- Java面试笔试题(基础)一:内部类及静态块
- Android开发面试经——3.常见Java基础笔试题
- Android开发面试经——3.常见Java基础笔试题
- Android开发面试经——3.常见Java基础笔试题
- Java基础知识(面试笔试)
- java笔试面试基础知识
- Android开发面试经——4.常见Java基础笔试题
- Java程序员笔试面试之java基础知识
- 【2016】Android的Java面试/笔试基础题目
- JAVA基础笔试、面试常见问题集合
- JAVA基础知识复习面试笔试宝典
- Java程序员笔试面试之Java基础
- Android开发面试经——3.常见Java基础笔试题
- Java面试笔试知识点之基础部分3
- Java面试笔试知识点之基础部分1