Diferencia entre StringBuilder y StringBuffer en Java

Muhammad Zeeshan 12 octubre 2023
  1. el StringBuffer en Java
  2. el StringBuilder en Java
  3. Diferencias entre StringBuilder y StringBuffer en Java
Diferencia entre StringBuilder y StringBuffer en Java

Este tutorial discutirá las diferencias entre las clases StringBuilder y StringBuffer de Java. ¡Entonces empecemos!

el StringBuffer en Java

La clase StringBuffer nos brinda un medio por el cual podemos usar datos de cadenas mutables en Java. Estas cadenas pueden ser utilizadas de manera despreocupada por numerosos subprocesos al mismo tiempo sin riesgo.

Sintaxis:

StringBuffer b = new StringBuffer("Shanii");

Ejemplo:

public class BufferexamplebyZeeshan {
  public static void main(String[] args) {
    StringBuffer b = new StringBuffer(" Hi! ");
    b.append(" Muhammad Zeeshan Here! ");
    b.append(" Let's Code ");
    System.out.println(b);
  }
}

Producción :

Hi! Muhammad Zeeshan Here! Let's Code

el StringBuilder en Java

StringBuilder también nos da acceso a cadenas mutables, aunque esta implementación no tiene seguridad de subprocesos. Numerosos subprocesos no pueden utilizarlo al mismo tiempo.

Debido a que esta clase no aplica esta funcionalidad adicional, es mucho más rápida que StringBuffer.

Sintaxis:

StringBuilder s1 = new StringBuilder("Shani");

Ejemplo:

public class BuilderexamplebyZeeshan {
  public static void main(String[] args) {
    StringBuilder s = new StringBuilder(" Hey!");
    s.append("I am a Programmer");
    System.out.println(s);
  }
}

Producción :

Hey!I am a Programmer

Diferencias entre StringBuilder y StringBuffer en Java

Veamos las diferencias entre StringBuilder y StringBuffer por las siguientes declaraciones:

No. StringBuilder StringBuffer
1 La función StringBuilder no está sincronizada, lo que significa que no es segura para subprocesos. Esto indica que dos hilos diferentes pueden llamar simultáneamente a los métodos de la clase StringBuilder. El objeto StringBuffer está sincronizado, lo que significa que es seguro para subprocesos. Significa que los métodos de StringBuffer no pueden ser llamados simultáneamente por dos hilos diferentes.
2 Se genera en la memoria heap de la computadora. También se genera en la memoria heap.
3 Nos ofrece cadenas que son Mutables. Podemos cambiar la cadena sin construir un objeto.
4 Puede almacenar un valor predeterminado de 16 caracteres. Al igual que StringBuilder, puede almacenar un valor predeterminado de 16 caracteres.
5 El más rápido de todos, ya que admite la mutabilidad y evita que muchos subprocesos funcionen simultáneamente. Es más lento que la clase StringBuilder ya que permite que varios hilos realicen acciones simultáneamente.
6 La concatenación se realiza mediante la función append(). Su concatenación también se realiza mediante la función append().

Ejemplo usando StringBuilder y StringBuffer

StringBuilder es más rápido que StringBuffer ya que no está sincronizado. Echemos un vistazo a un ejemplo básico para comparar StringBuilder y StringBuffer:

public class Main {
  public static void main(String[] args) {
    int RandomNumber = 5677839;
    long time;
    StringBuffer s = new StringBuffer();
    time = System.currentTimeMillis();
    for (int i = RandomNumber; i-- > 0;) {
      s.append("");
    }
    System.out.println(System.currentTimeMillis() - time);

    StringBuilder b = new StringBuilder();
    time = System.currentTimeMillis();
    for (int i = RandomNumber; i > 0; i--) {
      b.append("");
    }
    System.out.println(System.currentTimeMillis() - time);
  }
}

Producción :

161
17

El ejemplo anterior proporciona la comparación numérica de 161 milisegundos para StringBuffer y 17 milisegundos para StringBuilder, lo que hace bastante evidente que StringBuilder es la opción más eficiente.

Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

Artículo relacionado - Java String