Java基础
1.什么是重载和重写?
在Java中,重载(Overloading)和重写(Overriding)是两个不同的概念。
重载是指在同一个类中定义多个方法,它们具有相同的名称但参数列表不同。重载方法可以有不同的返回类型,但不能仅仅通过返回类型的不同来进行重载。重载方法的区分标准是参数的个数、类型或顺序。
重写是指在子类中重新定义父类中已有的方法。重写方法必须具有相同的名称、参数列表和返回类型。重写方法不能比父类方法拥有更严格的访问修饰符,但可以比父类方法拥有更宽松的访问修饰符。
2.String,StringBuilder,StringBuffer的区别?
-
不可变性:
- String类是不可变的,意味着一旦创建了String对象,其值就不能被修改。每次对String进行操作会创建一个新的String对象。这在多次修改字符串时会导致性能低下。
- StringBuilder和StringBuffer类是可变的,它们允许对字符串进行修改而无需创建新的对象。StringBuilder类是非线程安全的,而StringBuffer类是线程安全的。
-
线程安全性:
- String是线程安全的,因为它是不可变的。多个线程可以同时访问和共享String对象。
- StringBuilder是非线程安全的,适用于单线程环境,性能较好。
- StringBuffer是线程安全的,适用于多线程环境,但性能较StringBuilder略低。
-
性能:
- String类在进行字符串拼接或修改时需要创建新的对象,会导致内存开销和性能下降。
- StringBuilder和StringBuffer基于可变性的设计,在修改字符串时不需要创建新的对象,因此性能更好。