> 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/tipado.md).

# Tipado

## Tipado estático

En Java, o **tipado é estático**. Isto significa que os tipos de datos das variables **deben ser declarados explícitamente no momento da súa creación e non poden cambiar durante a execución do programa**.

Cando se declara unha variable, é necesario especificar o seu tipo. Por exemplo:

```java
int numero = 10; // A variable 'numero' é de tipo 'int'
```

A verificación dos tipos de datos ocorre no momento da compilación, antes de que o programa se execute. Se se intenta asignar un valor de tipo incorrecto a unha variable, o compilador xerará un erro.

```java
int numero = "dez"; // Esto causará un erro de compilación
```

## Tipado forte

En Java, o **tipado é forte**. Isto significa que a linguaxe aplica regras estritas sobre como os tipos de datos son utilizados e que non permite operacións que poidan dar lugar a confusión ou erros de tipo sen unha conversión explícita.

Java **non permite realizar operacións entre tipos incompatibles sen unha conversión explícita**. Por exemplo, non se pode sumar un `int` e un `String`<i class="fa-copy">:copy:</i> sen realizar unha conversión.

```java
int numero = 5;
String texto = "10";
// Esto causará un erro de compilación
int resultado = numero + texto; 
```

Se desexas realizar operacións entre tipos diferentes, debes usar conversións explícitas (*casting*). Por exemplo, para sumar un `int` e un `double`<i class="fa-copy">:copy:</i>, terías que converter o `int` a `double`<i class="fa-copy">:copy:</i> ou viceversa.

```java
int numero = 5;
double decimal = 10.5;
double resultado = numero + decimal; // Conversión automática de 'int' a 'double'
```

## Tipado explicito

En Java, o **tipado é principalmente explícito**. Isto significa que debes declarar o tipo de datos dunha variable no momento da súa creación. Aquí están os principais aspectos:

Cando creas unha variable, debes especificar claramente o seu tipo. Por exemplo:

```java
int numero = 10; // O tipo 'int' está explícitamente declarado
String texto = "Ola"; // O tipo 'String' tamén está explícitamente declarado
```

Se desexas realizar conversións entre tipos, debes facelo de maneira explícita (*casting*). Por exemplo:

```java
double decimal = 5.5;
int entero = (int) decimal; // Conversión explícita de 'double' a 'int'
```

{% hint style="warning" %}
**Tipado implícito en Java**

Java tamén ten algún grao de tipado implícito, pero está máis limitado:

* **Autoboxing**: A conversión automática entre tipos primitivos e as súas clases envolventes ocorre sen que o programador teña que especificar a conversión. Por exemplo:

```java
Integer numero = 5; // 'int' a 'Integer' é autoboxing
```

* **Promoción Automática**: En operacións matemáticas, un tipo primitivo menor (como `byte` ou `short`) pode ser promovido automaticamente a un tipo maior (como `int`) sen que se necesite unha conversión explícita. Por exemplo:

```java
byte b = 10;
int resultado = b + 5; // 'b' é promovido a 'int' automáticamente
```

{% endhint %}


---

# 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/tipado.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.
