Java desde cero: variables, tipos primitivos, clases envoltorio y conversiones
En esta lección aprenderás a declarar variables en Java, comprender los tipos de dato básicos (primitivos), utilizar sus clases envoltorio para convertir valores a texto y desde texto, y a imprimir resultados en pantalla. Es un recorrido paso a paso, sin dar nada por sabido.
“`Introducción y motivación
Todo programa manipula datos: edades, estaturas, nombres, respuestas de sí/no y números escritos como texto. Para guardarlos necesitaremos variables, para operarlos necesitaremos tipos adecuados, y para mostrarlos o leerlos necesitaremos convertir entre números y cadenas de texto.
Trabajaremos con un ejemplo concreto que declara variables de varios tipos, las convierte a String (texto), y muestra los resultados en la consola.
Mapa conceptual mínimo
- Programa: conjunto de instrucciones. En Java vive dentro de clases.
- Clase: plantilla que agrupa código. Aquí usaremos una clase llamada
Main. - Método
main: punto de entrada que se ejecuta al iniciar el programa:public static void main(String[] args). - Variable: nombre que guarda un valor en memoria. Se declara indicando un tipo (p. ej.,
int edad;). - Tipo primitivo: tipo básico y eficiente:
int,double,boolean,char, entre otros. - Tipo por referencia: objetos como
String(texto) o clases envoltorio (Integer,Double, etc.). - Literal: valor escrito literalmente:
20,1.75,true,'A',"Ana". - Clases envoltorio: clases que “envuelven” un primitivo y ofrecen utilidades:
Integer,Double,Boolean,Character. - Conversión a texto:
Integer.toString(20)produce"20". - Parseo desde texto:
Integer.parseInt("123")produce el número123. - Salida por consola:
System.out.println(...)imprime una línea.
El programa que estudiaremos
public class Main {
public static void main(String[] args) {
// declare y asigne las variables:
// edad
int edad = 20;
// estatura
double estatura = 1.75;
// gustaProgrammar
boolean gustaProgrammar = true;
// inicial
char inicial = 'A';
// nombre
String nombre = "Ana López";
String edadComoTexto;
String estaturaComoTexto;
String gustoComoTexto;
int numeroConvertido;
// Métodos de clases envoltorio
// convierta edad y estatura a String
edadComoTexto = Integer.toString(edad);
estaturaComoTexto = Double.toString(estatura);
// convierta gustaProgrammar a String
gustoComoTexto = Boolean.toString(gustaProgrammar);
// convierta "123" a un int numeroConvertido
numeroConvertido = Integer.parseInt("123");
// Imprimir todo
System.out.println("Nombre: " + nombre);
System.out.println("Inicial: " + inicial);
System.out.println("Edad: " + edad + " (" + edadComoTexto + ")");
System.out.println("Estatura: " + estatura + " (" + estaturaComoTexto + ")");
System.out.println("¿Te gusta programar?: " + gustaProgrammar + " (" + gustoComoTexto + ")");
System.out.println("Número convertido desde String: " + numeroConvertido);
}
```
} Observación: en Java los decimales usan punto (1.75), el carácter usa comillas simples ('A'), el texto usa comillas dobles ("..."), y los booleanos son true o false. La variable gustaProgrammar está escrita con doble “m”; por convención de estilo se prefiere gustaProgramar en lowerCamelCase, pero el código funciona.
Definiciones esenciales
Definición. Una variable en Java es un nombre asociado a un espacio de memoria donde se guarda un valor de un cierto tipo. Declarar es indicar el tipo y el nombre; asignar es dar un valor. Ejemplo: int edad = 20; declara una variable entera y le asigna \(20\).
Definición. Una clase envoltorio proporciona métodos estáticos y objetos para trabajar con un tipo primitivo. Por ejemplo, Integer envuelve a int y ofrece toString(int) y parseInt(String) para convertir entre número y texto.
Tabla rápida: primitivos ↔ envoltorios
| Primitivo | Envoltorio | Ejemplo literal | Conversión a String | Desde String |
|---|---|---|---|---|
int | Integer | 20 | Integer.toString(20) | Integer.parseInt("20") |
double | Double | 1.75 | Double.toString(1.75) | Double.parseDouble("1.75") |
boolean | Boolean | true | Boolean.toString(true) | Boolean.parseBoolean("true") |
char | Character | 'A' | (usa String.valueOf('A')) | (no hay parseo directo; se toma texto.charAt(0)) |
Teorema central: “Ir y volver” entre número y texto
Teorema. Para todo entero \(n\), la composición de conversión a texto y parseo devuelve el valor original:
Ánalisis preliminar (borrador)
La meta es justificar que “escribir el número como cadena y luego leerlo” no cambia el valor. Intuitivamente, Integer.toString(n) produce la representación decimal de \(n\), y Integer.parseInt interpreta exactamente esa representación.
Demostración
Demostración. Sea \(n\in\mathbb{Z}\) dentro del rango de int. El método Integer.toString(n) genera una cadena en base 10 cuyos caracteres son exactamente los dígitos de \(n\) (y, si corresponde, el signo '-'). Por definición de Integer.parseInt, al recibir una cadena que consiste en un signo opcional seguido de dígitos decimales válidos, calcula el entero cuyo valor posicional coincide con esos dígitos. Aplicando parseInt a la salida de toString, cada dígito vuelve a su lugar posicional original, recuperando \(n\). Por lo tanto, se cumple (1). Queda demostrado.
Corolario. Para todo boolean \(b\), \( \text{Boolean.parseBoolean}(\text{Boolean.toString}(b)) = b \). Se sigue porque toString produce exactamente "true" o "false", y parseBoolean interpreta esas cadenas de forma directa.
Heurística → Formal (cómo pensar y cómo escribir)
Análisis preliminar
Cuando necesites mostrar un dato no textual, conviértelo a String. Cuando recibas un número como texto (por ejemplo, de un formulario), parsea ese texto al tipo numérico correcto. Si aparece un error de formato, revisa que la cadena contenga solo dígitos y, para decimales, el punto ..
Demostración formal (patrón de uso correcto)
- Declarar y asignar:
int edad = 20;(declaración + asignación). - Convertir a texto:
String s = Integer.toString(edad);. - Concatenar para imprimir: si una parte es
String, el operador+concatena:"Edad: " + edad. - Parsear desde texto:
int n = Integer.parseInt("123");. Si el texto no es válido, se lanzaNumberFormatException.
Recetas de procedimiento
- Elige el tipo según el dato:
int(enteros),double(decimales),boolean(verdadero/falso),char(un carácter),String(texto). - Declara y asigna:
tipo nombre = valor;. - Convierte a texto con
TipoEnvoltorio.toString(valor)oString.valueOf(valor). - Desde texto a número con
TipoEnvoltorio.parseXxx(cadena)(p. ej.,Integer.parseInt,Double.parseDouble). - Imprime con
System.out.println(...); concatena partes con+.
Ejemplos escalonados
Ejemplo. Replicar y entender el programa dado.
- Planteamiento: declara variables de distintos tipos, conviértelas a texto y muestra todo.
- Desarrollo:
int edad = 20;guarda el entero 20.double estatura = 1.75;guarda un decimal con punto.boolean gustaProgrammar = true;valor lógico verdadero.char inicial = 'A';un solo carácter Unicode.String nombre = "Ana López";texto (secuencias de caracteres).- Conversiones:
Integer.toString(edad),Double.toString(estatura),Boolean.toString(gustaProgrammar). - Parseo:
Integer.parseInt("123")produce el entero 123. - Impresión:
System.out.println("Nombre: " + nombre);concatena y muestra.
- Verificación: la salida debe incluir
Edad: 20 (20)yEstatura: 1.75 (1.75), confirmando que la conversión a texto conserva el valor mostrado.
Ejemplo. Diferencia entre suma y concatenación.
- Planteamiento: ¿Qué imprimen estas dos líneas?
System.out.println(2 + 3); ``` System.out.println("2" + 3); - Desarrollo: en la primera ambos son números → suma → imprime
5. En la segunda hay unString→ concatenación → imprime23. - Chequeo: añade
System.out.println(2 + "3");para confirmar que basta con que una parte seaStringpara concatenar.
Cómo ejecutar (rápido)
- Guarda el código en un archivo llamado
Main.java(el nombre debe coincidir con la clase pública). - Compila:
javac Main.java - Ejecuta:
java Main - Verás la salida en la consola.
Errores frecuentes y cómo evitarlos
- Coma en decimales (
1,75) → en Java usa1.75. - Comillas equivocadas:
charusa'A';Stringusa"A". - Texto inválido al parsear:
Integer.parseInt("12a")lanzaNumberFormatException. Valida la cadena antes. - Nombre de archivo/clase: si la clase pública es
Main, el archivo debe serMain.java. - Signos y espacios:
'-'solo al inicio de enteros negativos; no se permiten espacios en el texto a parsear.
Ejercicios propuestos
- Declara
int anio = 2025;y guarda su versión en texto enString anioTxt. Imprime ambos en una línea. - Convierte
"3.14"adoubley multiplícalo por2. Imprime el resultado. - Declara
boolean activo = false;conviértelo a texto, e imprime:"¿Activo? "seguido del valor y su versión en texto. - Toma
String codigo = "A7";e imprime solo su primer carácter usandocodigo.charAt(0). - ¿Qué imprime
System.out.println("Edad: " + 18 + 2);? ¿YSystem.out.println("Edad: " + (18 + 2));?
Soluciones
Solución 1
String anioTxt = Integer.toString(anio); e imprimir: System.out.println("Año: " + anio + " (" + anioTxt + ")");. Chequeo: ambos muestran 2025.
Solución 2
double x = Double.parseDouble("3.14"); luego System.out.println(x * 2); imprime 6.28.
Solución 3
String s = Boolean.toString(activo); y System.out.println("¿Activo? " + activo + " (" + s + ")");. Resultado: false (false).
Solución 4
System.out.println(codigo.charAt(0)); imprime A. Recuerda: no hay parseo directo a char, se toma un carácter de la cadena.
Solución 5
Primera línea: "Edad: 182" (concatenación de texto). Segunda línea: "Edad: 20" (se suma dentro de paréntesis y luego se concatena).
Conclusión
Aprendiste a declarar variables, elegir tipos primitivos, usar clases envoltorio para convertir datos a texto y desde texto, y a imprimir resultados. El patrón clave es: “dato → toString → texto” y “texto válido → parseXxx → dato”, con la identidad del Teorema (1) como garantía conceptual. Este bloque de fundamentos se conecta naturalmente con entrada/salida de usuario, validación de datos y estructuras de control (condicionales y bucles) que verás a continuación.
Responses