Unitat Didàctica 3:
En aquesta unitat aprendràs:
String, Scanner, Random i MathString.format(), printf() i Text BlocksimportEn Java, gairebé tot gira al voltant dels objectes. Un objecte representa una entitat del món real o un concepte del programa que conté:
Una classe és el motlle, plantilla o definició a partir de la qual es creen (instancien) els objectes concrets utilitzant l'operador new.
String és una classe fonamental de Java que representa cadenes de text. En ser un objecte, disposa d'un conjunt molt potent de mètodes:
Per a llegir dades que l'usuari introdueix per la consola podem utilitzar la classe Scanner del paquet java.util:
Hi ha dos tipus essencials de mètodes en Java:
new (ex: scanner.nextLine() o text.toUpperCase()).Math.sqrt(), Integer.parseInt()).La classe java.util.Random permet generar números a l'atzar per a simulacions, jocs i proves:
Aquesta taula recull els mètodes més habituals que utilitzaràs constantment. Pots cercar per nom de mètode o ordenar per tipus de retorn:
| Classe | Mètode | Tipus Retorn | Descripció |
|---|---|---|---|
String | length() | int | Retorna la longitud en caràcters |
String | charAt(int idx) | char | Retorna el caràcter a la posició indicada |
String | substring(int inici, int fi) | String | Extreu un subtext del rang especificat |
String | contains(CharSequence s) | boolean | Comprova si conté una cadena de text |
String | toUpperCase() | String | Converteix tot el text a majúscules |
String | toLowerCase() | String | Converteix tot el text a minúscules |
String | equals(Object obj) | boolean | Compara el contingut exacte de dues cadenes |
Scanner | nextInt() | int | Llegeix el següent nombre enter pel teclat |
Scanner | nextDouble() | double | Llegeix el següent nombre decimal |
Scanner | nextLine() | String | Llegeix tota la línia de text fins al salt |
Scanner | hasNextInt() | boolean | Verifica si el següent valor introduït és enter |
Random | nextInt(int límit) | int | Genera un enter aleatori entre 0 i límit - 1 |
Hasta ahora has aprendido a programar. Pero Java tiene una biblioteca enorme que permite hacer muchísimas cosas sin tener que programarlas desde cero.
Aquí tienes pequeñas piezas de Lego: cada una hace una cosa
sencilla. Prueba a cambiar sus parámetros, repetirlas, combinarlas con
if, for, while o Random...
¿Qué serías capaz de construir?
💡 La idea: no necesitas aprenderte estas API. Descubre que existen y experimenta con ellas.
| API | Con Java puedo... | Snippet | Explicación |
|---|---|---|---|
JOptionPane |
💬 Mostrar un mensaje |
JOptionPane.showMessageDialog(null, "¡Hola!");
|
Muestra ¡Hola! en una ventana. |
JOptionPane |
❓ Preguntar algo |
JOptionPane.showInputDialog("¿Cómo te llamas?");
|
Muestra una ventana donde el usuario puede escribir una respuesta. |
JOptionPane |
⚠️ Mostrar una advertencia |
JOptionPane.showMessageDialog(null, "¡Cuidado!");
|
Muestra un mensaje emergente. |
| API | Con Java puedo... | Snippet | Explicación |
|---|---|---|---|
Robot |
🖱️ Mover el ratón |
new Robot().mouseMove(500, 300);
|
Mueve el ratón a la posición (500, 300). |
Robot |
🖱️ Hacer clic |
new Robot().click();
|
Hace clic con el botón izquierdo del ratón. |
Robot |
⌨️ Escribir |
new Robot().type("¡Hola!");
|
Escribe ¡Hola! utilizando el teclado. |
Robot |
⌨️ Pulsar una tecla |
new Robot().type(KeyEvent.VK_ENTER);
|
Pulsa la tecla Enter. |
Robot |
🎨 Averiguar el color de la pantalla |
IO.println(new Robot().getPixelColor(500, 300));
|
Indica el color del píxel situado en (500, 300). |
Robot |
⏱️ Mover el ratón lentamente |
new Robot().mouseMove(500, 300);
|
Mueve el ratón a una posición determinada. Cambia las coordenadas y experimenta. |
| API | Con Java puedo... | Snippet | Explicación |
|---|---|---|---|
ProcessBuilder |
🚀 Abrir un programa |
new ProcessBuilder("calc").start();
|
Abre la calculadora de Windows. |
ProcessBuilder |
💻 Ejecutar un comando |
new ProcessBuilder("cmd", "/c", "echo Hola").start();
|
Ejecuta un comando del sistema. |
ProcessBuilder |
🛑 Cerrar un programa |
new ProcessBuilder("taskkill", "/IM", "notepad.exe", "/F").start();
|
Cierra el Bloc de notas en Windows. |
Thread |
⏱️ Hacer una pausa |
Thread.sleep(1000);
|
Hace que el programa espere un segundo antes de continuar. |
| API | Con Java puedo... | Snippet | Explicación |
|---|---|---|---|
Desktop |
🌐 Abrir una página web |
Desktop.getDesktop().browse(URI.create("https://google.com"));
|
Abre Google en el navegador predeterminado. |
Desktop |
📄 Abrir un archivo |
Desktop.getDesktop().open(new File("foto.jpg"));
|
Abre el archivo con la aplicación predeterminada. |
Desktop |
🖨️ Imprimir un documento |
Desktop.getDesktop().print(new File("documento.pdf"));
|
Envía el documento a la aplicación de impresión predeterminada. |
Toolkit |
📋 Copiar texto |
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection("Hola desde Java"), null);
|
Copia Hola desde Java en el portapapeles. |
| API | Con Java puedo... | Snippet | Explicación |
|---|---|---|---|
Files |
📝 Crear un archivo |
Files.writeString(Path.of("hola.txt"), "¡Hola!");
|
Crea hola.txt y escribe ¡Hola!. |
Files |
📖 Leer un archivo |
IO.println(Files.readString(Path.of("hola.txt")));
|
Lee y muestra el contenido completo de hola.txt. |
Files |
📋 Copiar un archivo |
Files.copy(Path.of("foto.jpg"), Path.of("copia.jpg"));
|
Hace una copia de foto.jpg. |
Files |
✏️ Cambiar el nombre de un archivo |
Files.move(Path.of("viejo.txt"), Path.of("nuevo.txt"));
|
Cambia el nombre de viejo.txt a nuevo.txt. |
Files |
🗑️ Borrar un archivo |
Files.delete(Path.of("basura.txt"));
|
Borra basura.txt. |
Java puede controlar un sintetizador MIDI. No necesitas ningún archivo de sonido: puedes generar las notas directamente desde el programa.
| API | Con Java puedo... | Snippet | Explicación |
|---|---|---|---|
javax.sound.midi |
🎵 Tocar una nota |
canal.noteOn(60, 100);
|
Hace sonar la nota MIDI número 60. |
javax.sound.midi |
🔇 Dejar de tocar una nota |
canal.noteOff(60);
|
Deja de sonar la nota MIDI número 60. |
javax.sound.midi |
🎹 Cambiar de instrumento |
canal.programChange(80);
|
Cambia el instrumento utilizado por el sintetizador. |
javax.sound.midi |
🎵 Tocar una melodía |
for (int n : new int[]{60, 62, 64, 65, 67, 69, 71, 72}) {
canal.noteOn(n, 100);
Thread.sleep(300);
canal.noteOff(n);
}
|
Toca una escala musical. Cambia las notas o la duración y crea tu propia melodía. |
Con Graphics2D puedes construir dibujos a partir de piezas
muy sencillas. Cambia las coordenadas, repite las instrucciones o combina
los dibujos con bucles y números aleatorios.
| API | Con Java puedo... | Snippet | Explicación |
|---|---|---|---|
Graphics2D |
📏 Dibujar una línea |
g.drawLine(10, 10, 200, 100);
|
Dibuja una línea entre dos puntos. |
Graphics2D |
⭕ Dibujar un círculo |
g.drawOval(50, 50, 100, 100);
|
Dibuja una circunferencia o una elipse. |
Graphics2D |
🟥 Dibujar un rectángulo |
g.fillRect(50, 50, 100, 100);
|
Dibuja un rectángulo relleno. |
Graphics2D |
🔤 Dibujar texto |
g.drawString("¡Hola!", 50, 50);
|
Dibuja un texto en la superficie gráfica. |
| API | Con Java puedo... | Snippet | Explicación |
|---|---|---|---|
Robot |
📸 Hacer una captura |
Robot r = new Robot();
Rectangle pantalla = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage imagen = r.createScreenCapture(pantalla);
|
Captura la pantalla y guarda la imagen en memoria. |
Robot |
🎨 Leer el color de un punto |
IO.println(new Robot().getPixelColor(100, 100));
|
Permite saber qué color hay en una posición concreta de la pantalla. |
Estas API permiten que dos programas que están en distintos ordenadores intercambien datos a través de una red.
| API | Con Java puedo... | Snippet | Explicación |
|---|---|---|---|
Socket |
🌐 Conectarme a otro ordenador |
new Socket("192.168.1.50", 5000);
|
Intenta conectar con un programa que está esperando en ese ordenador y puerto. |
Socket |
📤 Enviar un mensaje |
socket.getOutputStream().write("¡Hola!".getBytes());
|
Envía un mensaje al otro programa. |
ServerSocket |
📡 Esperar a otro ordenador |
new ServerSocket(5000).accept();
|
Espera hasta que otro programa se conecte al puerto 5000. |
Lo interesante no es aprender estas instrucciones de memoria. Lo interesante empieza cuando las combinas con lo que ya sabes.
Java abre el Bloc de notas, espera dos segundos y escribe en él. ¿Qué podrías hacer si cambias el texto, el tiempo y las acciones del robot?
Cambia las notas. Cambia la duración. Repite algunas. Cambia el instrumento. Añade silencios. ¿Puedes hacer que Java toque una canción?
Has construido una pequeña macro. Ahora puedes cambiar las coordenadas, las esperas y las acciones. ¿Puedes automatizar una tarea que haces habitualmente?
🧱 Piensa en piezas de Lego: una instrucción puede parecer poca cosa. Pero puedes repetirla, cambiar sus parámetros y combinarla con otras. Muchas cosas grandes empiezan con una pieza muy pequeña.
Java ofereix eines elegants per formatar taules, tiquets i missatges amb precisió numèrica:
Posa a prova el que has après completant els qüestionaris interactius auto-avaluables i els reptes de programació.