> 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/ud1-introduccion-a-programacion/execucion-secuencial/o-tipo-cadena.md).

# O tipo cadena

En Java, a clase `String`<i class="fa-copy">:copy:</i> é unha das clases máis utilizadas e forma parte do paquete `java.lang`<i class="fa-copy">:copy:</i>. **Representa cadeas de texto** e, aínda que `String`<i class="fa-copy">:copy:</i> se comporta como un tipo de datos primitivo, realmente é unha clase que proporciona moitas funcionalidades para traballar con texto.

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

Vamos utilizar os Strings para almacenar palabra e frases. Un String pode ter entre 0 e N caracteres alfanuméricos.

```java
String vacio = "";
String nombre = "Antonio";
String apellido = "López";
```

## Concatenación

Tratase dunha das operacións mais comúns entre cadeas. Utiliza o **operador +** (coma se fose unha suma), para unir duas ou mais cadeas noutra.

```java
String nomeCompleto = nombre + apellido;
String nomeCompleto2 = nombre+ " " +  apellido;
```

## Concatenación con variables

A operación concatenación permite unir nunha mesma cadea outras cadeas e variables de outros tipos:

```java
String producto = "Peras";
int cantidadKg = 5;
float precioKg = 2.25f;
String res = "El producto " + producto + " con un peso de " + cantidadKg +
" Kg, tiene un precio de " + cantidadKg*precioKg;  
//El producto Peras con un peso de 5 Kg, tiene un precio de 11.25
```

## Métodos

A clase `String`<i class="fa-copy">:copy:</i> proporciona moitos métodos útiles para manipular cadeas de texto. Aquí tes algúns dos máis comúns:

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

  ```java
  String sb = new String(); // Cadea baleira
  String sbCoTexto = new String("Ola Mundo"); // Cadea inicial
  ```
* **Obter un carácter nunha posición concreta**: `char charAt(int index)`<i class="fa-copy">:copy:</i>

  ```java
  char caracter = texto.charAt(4); // Obtense o caracter da posición 4
  ```
* **Concatenar cadeas**: `concat(String str)`<i class="fa-copy">:copy:</i>

  ```java
  String parte1 = "Ola";
  String parte2 = " Mundo";
  String resultado = parte1.concat(parte2); // Retorna "Ola Mundo"
  ```
* **Comprobar se unha cadea de texto contén unha determinada subcadea**: `boolean contains(CharSequence subcadea)`<i class="fa-copy">:copy:</i>

  ```java
  String texto = "Ola, benvido a Java!";
  System.out.println(texto.contains("benvido")); // true
  System.out.println(texto.contains("Python"));  // false
  ```
* **Comprobar se unha cadea de texto remata cunha determinada subcadea** : `boolean endsWith(String sufixo)`<i class="fa-copy">:copy:</i>

  ```java
  String ficheiro = "documento.pdf";
  System.out.println(ficheiro.endsWith(".pdf"));  // true
  System.out.println(ficheiro.endsWith(".txt"));  // false
  ```
* **Obter o longo da cadea**: `int length()`<i class="fa-copy">:copy:</i>

  ```java
  String texto = "Exemplo";
  int longo = texto.length(); // Retorna 7
  ```
* **Reemplazar Caracteres ou Subcadeas**: `String replace(char caracter, char caracterNovo)`<i class="fa-copy">:copy:</i> e `String replace(String subcdea, char subcadeaNova)`<i class="fa-copy">:copy:</i>

  ```java
  String texto = "Java é divertido";
  String resultado = texto.replace("divertido", "incrible"); // Retorna "Java é incrible"
  ```
* **Comprobar se unha cadea de texto comeza cunha determinada subcadea** : `boolean startsWith(String prefixo)`<i class="fa-copy">:copy:</i>

  ```java
  String ficheiro = "documento.pdf";
  System.out.println(ficheiro.startsWith("doc"));  // true
  System.out.println(ficheiro.startsWith("txt"));  // false
  ```
* **Subcadeas**: `String substring(int indiceComezo)`<i class="fa-copy">:copy:</i> e `String substring(int indiceComezo, int indiceFinalsinIncluir)`<i class="fa-copy">:copy:</i>

  ```java
  String texto = "Benvido";
  String subcadea = texto.substring(3); // Retorna "vido"
  ```
* **Conversións a maiúsculas ou minúsculas**: `String toUpperCase()`<i class="fa-copy">:copy:</i> e `String toLowerCase()`<i class="fa-copy">:copy:</i>

  ```java
  String texto = "Ola Mundo";
  String maiusculas = texto.toUpperCase(); // Retorna "OLA MUNDO"
  ```
* **Eliminar espazos en branco ao principio e final**: `String trim()`<i class="fa-copy">:copy:</i>

  ```java
  String texto = "   Ola   ";
  String senEspazos = texto.trim(); // Retorna "Ola"
  ```


---

# 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/ud1-introduccion-a-programacion/execucion-secuencial/o-tipo-cadena.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.
