> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/ud3-introducion-a-programacion-orientada-a-obxectos/clases-da-api-de-java/stringbuilder.md).

# StringBuilder

A clase `StringBuilder`<i class="fa-copy">:copy:</i> en Java é unha **clase mutable** que permite crear e modificar cadeas de texto de forma máis eficiente que a clase `String`<i class="fa-copy">:copy:</i> cando se realizan moitas operacións de concatenación ou modificación. A diferencia das cadeas de tipo `String`<i class="fa-copy">:copy:</i>, que son inmutables, as instancias de `StringBuilder`<i class="fa-copy">:copy:</i> poden cambiarse sen crear novos obxectos na memoria, o que reduce o uso de recursos e mellora o rendemento.

{% hint style="warning" %}
**Documentación oficial:** <https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/StringBuilder.html>
{% endhint %}

As características principais de `StringBuilder`<i class="fa-copy">:copy:</i>son:

* **Mutabilidade**: `StringBuilder`<i class="fa-copy">:copy:</i> permite modificar o contido da cadea sen crear novos obxectos cada vez que se fai un cambio. Pódense engadir, eliminar e modificar caracteres dentro da mesma instancia.
* **Mellor Rendemento en Concatenacións**: Para operacións intensivas de concatenación, como nun bucle, `StringBuilder`<i class="fa-copy">:copy:</i> é significativamente máis rápido que `String`<i class="fa-copy">:copy:</i>, xa que evita a creación de múltiples obxectos temporais.

#### Métodos máis utilizados <a href="#id-1031-metodos-mais-utilizados" id="id-1031-metodos-mais-utilizados"></a>

A continuación amósoche algúns dos métodos máis utilizados para traballar con `StringBuilder`<i class="fa-copy">:copy:</i>:

* **Crear unha instancia de `StringBuilder`**<i class="fa-copy">:copy:</i>

  ```java
  StringBuilder sb = new StringBuilder(); // Cadea baleira
  StringBuilder sbCoTexto = new StringBuilder("Ola Mundo"); // Cadea inicial
  ```
* **Concatenar ou engadir texto**: `append(Object obj)`<i class="fa-copy">:copy:</i>

  ```java
  StringBuilder sb = new StringBuilder("Ola");
  sb.append(" Mundo");
  System.out.println(sb.toString()); // Saída: "Ola Mundo"
  ```
* **Inserir texto en posicións específicas**: `insert(int ofsset, Object obj)`<i class="fa-copy">:copy:</i>

  ```java
  StringBuilder sb = new StringBuilder("Ola Mundo");
  sb.insert(4, "a todos "); // Insire en posición 4
  System.out.println(sb.toString()); // Saída: "Ola a todos Mundo"
  ```
* Os utilizamos tamén na clase `String`<i class="fa-copy">:copy:</i>.

#### Cando usar StringBuilder <a href="#id-1032-cando-usar-stringbuilder" id="id-1032-cando-usar-stringbuilder"></a>

* **Concatenacións Complexas ou Repetitivas**: Especialmente en bucles, onde hai moitas concatenacións de cadeas.
* **Modificacións frecuentes**: Cando necesitas realizar insercións, eliminacións, ou outras modificacións nunha cadea de texto.

## Exemplos de uso

```java
        StringBuilder sb1 = new StringBuilder("Hola");
        StringBuilder sb2 = new StringBuilder("Hola");
        System.out.println("Son iguales: " + (sb1 == sb2)); //true por que son el mismo objeto
        System.out.println("Tienen los mismos datos " + sb1.equals(sb2));//OJO!!! StringBuilder no sobrescribe equals
        System.out.println("ID sb1: " + System.identityHashCode(sb1));
        System.out.println("ID sb2: " + System.identityHashCode(sb2));
        sb1.append(" Mundo"); //Hola Mundo
        System.out.println(sb1);
        System.out.println("ID sb1: " + System.identityHashCode(sb1));
        sb1.insert(5, ", buenos dias al "); //Hola , buenos dias al Mundo
        System.out.println(sb1);
        System.out.println("ID sb1: " + System.identityHashCode(sb1));
        sb1.delete(4,12); //Ultimo no incluido =>Holas dias al Mundo
        System.out.println(sb1);
        System.out.println("ID sb1: " + System.identityHashCode(sb1));
        sb1.replace(1, 2, "z"); //O por z => Hzlas dias al Mundo
        System.out.println(sb1);
        System.out.println("ID sb1: " + System.identityHashCode(sb1));
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/ud3-introducion-a-programacion-orientada-a-obxectos/clases-da-api-de-java/stringbuilder.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
