一、重载和重写的区别?
重载:在同一个类里,方法名必须相同,参数类型、个数、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。
重写:发生在父子类关系里,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类。访问修饰符范围大于父类,如果父类方法访问修饰符为private子类就不能重写该方法。
二、==与equals的区别
==的作用:基本类型比较值是否相同,引用类型比较hashCode是否相同。
equals:引用类型默认情况下比较hashCode,重写equals方法则可以比较值。
三、String、StringBuffer、StringBuilder的区别
String:字符串常量,使用final修饰,是线程安全的。
StringBuffer:字符串变量(线程安全)对方法加了synchronized同步锁,所以是线程安全的。
StringBuilder:字符串变量(非线程安全)没有对方法加锁,所以是线程不安全的。
如果要操作少量的数据用string,多线程操作大量数据用StringBuffer,单线程大量数据用StringBuilder。
总结
很基本的三个小面试题。