Java基础

70 阅读2分钟

Java基础

1.什么是重载和重写?

在Java中,重载(Overloading)和重写(Overriding)是两个不同的概念。

重载是指在同一个类中定义多个方法,它们具有相同的名称但参数列表不同。重载方法可以有不同的返回类型,但不能仅仅通过返回类型的不同来进行重载。重载方法的区分标准是参数的个数、类型或顺序。

重写是指在子类中重新定义父类中已有的方法。重写方法必须具有相同的名称、参数列表和返回类型。重写方法不能比父类方法拥有更严格的访问修饰符,但可以比父类方法拥有更宽松的访问修饰符。

2.String,StringBuilder,StringBuffer的区别?

  1. 不可变性:

    • String类是不可变的,意味着一旦创建了String对象,其值就不能被修改。每次对String进行操作会创建一个新的String对象。这在多次修改字符串时会导致性能低下。
    • StringBuilder和StringBuffer类是可变的,它们允许对字符串进行修改而无需创建新的对象。StringBuilder类是非线程安全的,而StringBuffer类是线程安全的。
  2. 线程安全性:

    • String是线程安全的,因为它是不可变的。多个线程可以同时访问和共享String对象。
    • StringBuilder是非线程安全的,适用于单线程环境,性能较好。
    • StringBuffer是线程安全的,适用于多线程环境,但性能较StringBuilder略低。
  3. 性能:

    • String类在进行字符串拼接或修改时需要创建新的对象,会导致内存开销和性能下降。
    • StringBuilder和StringBuffer基于可变性的设计,在修改字符串时不需要创建新的对象,因此性能更好。