flowchart LR
A["Codi font<br/>Hola.java"] -->|"compilador<br/>javac"| B["Bytecode<br/>Hola.class"]
B -->|"màquina virtual<br/>java (JVM)"| C["Programa<br/>en execució"]
4 El primer programa en Java
Objectius
- Conèixer què és Java.
- Escriure, compilar i executar el primer programa en Java.
- Entendre l’estructura mínima d’un programa (classe i mètode
main). - Mostrar informació per pantalla amb
System.out. - Llegir dades de l’usuari amb
Scanner. - Escriure comentaris i traduir pseudocodi senzill a Java.
Per executar aquests programes necessites tenir instal·lat el JDK i un editor. Tot el procés està explicat als annexos.
4.1 Què és Java?
Java és un llenguatge de programació creat als anys 90 i encara avui un dels més usats del món, sobretot en aplicacions empresarials, Android i sistemes grans. Nosaltres farem servir la versió Java 25, tot i que pel contingut del curs, amb versions més antigues també seria suficient.
La gran idea de Java és “escriu una vegada, executa a tot arreu”. Un mateix programa funciona a Windows, Linux, macOS, dispositius electrònics,… sense canvis. Per aconseguir-ho, cal compilar el codi i executar-lo en una màquina virtual de Java JVM.
De codi font a execució
L’ordinador no entén Java directament. El teu codi passa per un procés abans d’executar-se:
- Codi font. El text que escrius tu, en fitxers amb extensió
.java. El codi. - Compilació. El compilador (
javac) tradueix el codi font a bytecode, un format intermedi, i genera un fitxer.class. - Execució. La màquina virtual de Java (JVM) llegeix el bytecode i l’executa. La JVM és el que hi ha de diferent a cada sistema operatiu; per això el teu programa és el mateix a tot arreu.
4.2 El primer programa: Hola món
Per tradició, el primer programa de qualsevol llenguatge mostra el text “Hola, món!”. Crea un fitxer anomenat HolaMon.java amb aquest contingut:
public class HolaMon {
public static void main(String[] args) {
System.out.println("Hola, món!");
}
}Sembla que hi ha moltes coses per a una sola línia útil. Tranquil·litat: ara ho desglossarem tot.
De moment, fixa’t que la línia que fa la feina és System.out.println("Hola, món!");.
Compilar i executar des del terminal
Si fas servir un IDE, n’hi ha prou amb prémer el botó d’executar. Però és important que entenguis què passa per sota. Des d’un terminal, situats al directori on hi ha el fitxer anterior, executem:
javac HolaMon.java
java HolaMon
La primera comanda, compila el codi i genera el fitxer HolaMon.class i la segona ho executa. La sortida serà:
Hola, món!
El fitxer s’ha de dir exactament igual que la classe pública, respectant majúscules i minúscules, i acabar en .java. La classe HolaMon ha d’estar al fitxer HolaMon.java.
Si no coincideixen, el compilador es queixarà.
4.3 Estructura d’un programa Java
Aquest és l’esquelet mínim de tot programa Java:
public class NomDelPrograma { // (1) la classe
public static void main(String[] args) { // (2) el mètode main
... // (3) aquí van les instruccions
}
}La classe. De moment pensa-ho com un contenidor que embolcalla tot el programa. Tot el codi de Java viu dins d’una classe. El nom l’escrivim en PascalCase, la primera lletra de cada paraula en majúscula: HolaMon, CalculadoraIva.
**El mètode
main. És el punt d’entrada: quan s’executa un programa, Java busca aquest mètode i comença per la seva primera línia. Aquesta línia és sempre igual; ara mateix la copies tal qual. Més endavant en veurem l’explicació.Les instruccions. Dins del mètode principal, entre les claus
{ }, van les ordres que s’executen una rere l’altra, de dalt a baix.
flowchart TD
A["Classe HolaMon"] --> B["Mètode main"]
B --> C["Instrucció 1"]
C --> D["Instrucció 2"]
D --> E["..."]
Regles de sintaxi
Java és estricte en la forma. Aquestes normes són obligatòries:
| Regla | Exemple |
|---|---|
Cada instrucció acaba amb punt i coma ; |
System.out.println("Hola"); |
Els blocs van entre claus { } |
main(...) { ... } |
| Distingeix majúscules i minúscules | Main no és main |
| Indentació de 4 espais per llegibilitat | (dins de cada bloc) |
Un dels principals errors al principi és oblidar-se el ; al final d’una instrucció.
4.4 Comentaris
Els comentaris són text que escrius per a les persones, no per a l’ordinador. El compilador els ignora completament. Serveixen per explicar què fa el codi.
Java té tres formes de comentari:
// Comentari d'una línia: des de les dues barres fins al final de la línia.
/* Comentari de bloc:
pot ocupar
diverses línies. */
/**
* Comentari de documentació (Javadoc).
* Serveix per documentar classes i mètodes. El veurem més endavant.
*/Per ara, utilitzarem les dues primeres.
4.5 Mostrar informació: System.out
Per escriure per pantalla, Java ens dona System.out. Té dos mètodes principals:
| Instrucció | Què fa |
|---|---|
System.out.println(...) |
Escriu i salta de línia al final |
System.out.print(...) |
Escriu sense saltar de línia |
Exemple:
public class Sortida {
public static void main(String[] args) {
System.out.print("Hola, ");
System.out.print("món");
System.out.println("!"); // aquí sí que salta de línia
System.out.println("Nova línia");
}
}Genera aquesta sortida per pantalla:
Hola, món!
Nova línia
Combinar text i valors amb +
Amb l’operador + pots concatenar (enganxar) textos i valors dins d’un println:
public class Salutacio {
public static void main(String[] args) {
String nom = "Marta";
int edat = 19;
System.out.println("Hola, " + nom + ". Tens " + edat + " anys.");
}
}Sortida:
Hola, Marta. Tens 19 anys.
Mini-repte
Escriu un programa que mostri, en tres línies diferents, el teu nom, la teva edat i la teva ciutat. Fes servir tres crides a System.out.println.
4.6 Llegir dades de l’usuari: Scanner
Per llegir dades introduïdes per l’usuari des del teclat, fem servir la classe Scanner.
Els passos a seguir són:
- Importar la classe
Scanneral principi del fitxer. - Crear un objecte de tipus
Scannerconnectat al teclat (System.in): - Llegir el valor amb els mètodes que ens ofereix la classe.
- Tancar l’objecte creat per alliberar recursos.
| Mètode | Llegeix |
|---|---|
nextLine() |
Una línia sencera de text (String) |
nextInt() |
Un número enter (int) |
nextDouble() |
Un número amb decimals (double) |
Exemple de programa que demana el nom i l’edat i saluda l’usuari:
import java.util.Scanner;
public class Salutacio {
public static void main(String[] args) {
Scanner lector = new Scanner(System.in);
System.out.print("Com et dius? ");
String nom = lector.nextLine();
System.out.print("Quants anys tens? ");
int edat = lector.nextInt();
System.out.println("Hola, " + nom + "! L'any que ve en faràs " + (edat + 1) + ".");
lector.close(); // tanquem el Scanner quan ja no el necessitem
}
}nextInt() i nextLine()
Quan llegeixes un número amb nextInt() i tot seguit un text amb nextLine(), el segon sovint “s’empassa” una línia buida i sembla que no funciona.
És un descuit molt comú de principiant. De moment, si et passa, canvia l’ordre de les lectures o afegeix un nextLine() extra per netejar.
4.7 De pseudocodi a Java
A continuació, tenim un exemple per passar un pseudocodi a llenguatge Java.
Pseudocodi:
Algorisme MitjanaTresNotes
Llegir nota1, nota2, nota3
mitjana ← (nota1 + nota2 + nota3) / 3
Escriure "La mitjana és:", mitjana
FiAlgorisme
Java:
import java.util.Scanner;
public class MitjanaTresNotes {
public static void main(String[] args) {
Scanner lector = new Scanner(System.in);
System.out.print("Nota 1: ");
double nota1 = lector.nextDouble();
System.out.print("Nota 2: ");
double nota2 = lector.nextDouble();
System.out.print("Nota 3: ");
double nota3 = lector.nextDouble();
double mitjana = (nota1 + nota2 + nota3) / 3;
System.out.println("La mitjana és: " + mitjana);
lector.close();
}
}Observa el paral·lelisme: Llegir es converteix en Scanner, ← es converteix en =, i Escriure es converteix en System.out.println. La lògica és exactament la mateixa que ja havies dissenyat. Programar en Java és, en bona part, traduir algorismes que ja saps pensar.
Encara que ara sàpigues Java, no abandonis el pseudocodi. Per a un problema nou, pensa primer l’algorisme en pseudocodi o en un diagrama de flux, i després tradueix-lo. Et concentres en la lògica sense encallar-te amb la sintaxi.
Mini-repte
Tradueix a Java aquest algorisme: demana un preu sense IVA, calcula el preu amb un 21% d’IVA i mostra’l. Pista: double preuFinal = preu * 1.21;.
4.8 Resum
- Java és un llenguatge compilat a bytecode, que la JVM executa a qualsevol sistema operatiu: “escriu una vegada, executa a tot arreu”.
- El codi passa de
.java(font) a.class(bytecode) ambjavac, i s’executa ambjava. - Tot programa viu dins d’una classe i comença pel mètode
main. Cada instrucció acaba amb;i els blocs van entre{ }. - Els comentaris (
//,/* */,/** */) són per a les persones; el compilador els ignora. System.out.printlniSystem.out.printescriuen per pantalla;+concatena text i valors.Scannerllegeix dades del teclat: importar, crear l’objecte i cridarnextLine(),nextInt()onextDouble().- Traduir de pseudocodi a Java és directe:
←passa a=,LlegiraScanner,EscriureaSystem.out.println.