目录
ArrayList和LinkedList的区别, ArrayList和vector区别
String类、StringBuffer类与StringBuilder类的区别
==与equals的区别
==
如果是基本数据类型,则比较基本数据类型的值;
如果是引用数据类型,则比较引用变量所指向对象的地址
equals
Object类中equals方法比较的是引用变量所指向对象的地址
一般情况下重写之后比较的是对象的值
方法重载与方法重写的区别
方法重载:类中出现了多个名称相同的方法,可通过参数的个数、类型、顺序来区分所调用的方法。方法的返回值与重载无关,普通成员方法也可以重载。若类中定义了有参的构造方法,那么默认无参的构造方法就不存在了,若有需要必须定义出来。
方法重写:当父类的方法实现不能满足子类需求时,可在子类中对父类的方法进行重写。重写方法的结构必须与父类保持一致(方法名一致,参数一致,返回值一致,访问权限大于等于父类),构造方法、静态方法不能重写,成员变量不存在重写。
静态成员变量与非静态成员变量的区别
静态成员变量随着类的加载而加载,且内存中只有一份,通过某个对象改变静态变量的值,这个类其他所有对象中这个静态变量的值就跟着变量。
非静态成员变量随着对象的创建而加载,修改某个对象的变量,其他对象的变量不会随之改变。
throws与throw区别
throws: 跟在方法声明后面,后面跟的是异常类名,抛出异常后,由方法调用者去处理,throws声明方法可能会出现某种异常。
throw: 用在方法体内,后面跟的是异常类对象名,用来抛出一个异常对象,由方法体中语句来处理, throw是抛出异常,方法中相当于出现了异常。
final 和 finally{ }区别
final用于声明属性、方法、类和局部变量。被final修饰的类不能被其他类继承,被其修饰的方法不能被重写,被其修饰的变量只能被赋值一次。
finally块通常放在try、catch后面,其中的语句一定会被执行,正常执行或处理异常后必须执行的语句写在finally中。
ArrayList和LinkedList的区别, ArrayList和vector区别
ArrayList底层的实现数组,而LinkedList是双向链表。ArrayList查询快,添加慢。LinkedList查询慢,但是在插入删除时比较高。
Vector多线程是安全的,而ArrayList不是。Vector类中的方法有synchronized进行修饰,Vector在效率上无法与ArrayList相比;ArrayList存储空间不够时会扩充为原来的1.5倍,Vector会扩充为原来空间的2倍。
String类、StringBuffer类与StringBuilder类的区别
String:字符串常量,适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况,是线程安全的