1.hashmap和hashtable的区别?
hashmap允许键或值为null,而hashtable不允许键或值为null,hashtable是线程安全的,效率低,hashmap是线程不安全的,效率高,
2.数组和链表的区别?
数组可以包含基本数据类型和引用数据类型,而链表只能包含引用数据类型,数组的长度一旦被定义就不能更改,而链表的长度是动态变化的,
数组查询快增删慢,链表增删快查询慢,链表没有索引,而数组是有索引的。
3.Comparable和Comparator接口是干什么的?列出它们的区别。
Comparable是一个接口,它里面有一个方法compareTo(),这个方法可以给对象进行排序,通过返回值来判断
4.什么是值传递和引用传递?
对象被值传递,意味着传递的是对象的一个副本,其原来对象的值不发生改变,对象被引用传递,传递的是对象的地址值,改变的是原来的对象。
5.Java中垃圾回收有什么目的?什么时候进行垃圾回收?
垃圾回收是识别并且丢弃应用不再使用的对象来释放资源。
6.final、finally和finalize的区别?
在java中final可以用来修饰类、方法和属性,当修饰类时该类不能被继承,当修饰方法时该方法不能够被重写,当修饰属性时,
该属性就为常量,不可被修改,finally作为异常处理的关系,它只能在try、catch后面,并且在执行程序时不管有没有发生异
常,该代码块一定会执行的,finalize()是object的一个类,它主要是负责垃圾回收的。
7.throw和throws的区别?
throw用来在程序中明确的抛出异常,throws用来表明方法不能处理的异常,多个异常之间用逗号隔开。
8.==与equals的区别?
==比较基本数据类型比较的是值,比较引用数据类型比较的是地址值,equals比较的是地址值,由于string对equals方法进行了重写,所以比较的是值。
9.string、stringBuffer和stringBuilder的区别?
string提供了数值不可修改的的字符串,stringBuffer和stringBuilder是数值可以修改的,stringBuilder是线程不安全的,效率高,stringBuffer是线程安全的,效率低。