1.1 重载与重写的区别
·重载是对象的方法之间,它们方法名相同,但方法的参数列表不同
重写是父子类(包括接口与实现类)中两个同名方法,它们方法名相同,且方法的参数列表相同重载在编译阶段,由编译器根据传递给方法的参数来区分方法,例如
·而重写是在运行阶段,由虚拟机解释器去获取引用对象的实际类型,根据类型才能确定该调用哪个方法,例如有没有发生重写,可以使用 @Override 来检查
1.2String,StringBuilder 和StringBuffer 的区别
它们都可以用来表示字符串对象
·String 表示的字符串是不可变的,而后两者表示的字符串是内容可变的(可以增、删、改字符串里的内容)·StringBuilder 不是线程安全的,StringBuffer 是线程安全的,而 String 也算是线程安全的适用场景
·大部分场景下使用 String 就足够了
如果有大量字符串拼接的需求,建议用后两者,此时
此字符串对象需要被多线程同时访问,用 StringBuffer 保证安全
此字符串对象只在线程内被使用,用 StringBuilder 足够了另外针对 String 类是 final 修饰会提一些问题,把握下面几点
·本质是因为 String 要设计成不可变的,final 只是条件之一
·不可变的好处有很多:线程安全、可以缓存等