1. Concetti Base di Java
Cos'è Java? Perché Java?
Java è un linguaggio di programmazione versatile e di alto livello, ampiamente utilizzato per sviluppare applicazioni su diverse piattaforme. Creato da Sun Microsystems nel 1995, Java enfatizza l'indipendenza dalla piattaforma attraverso il motto:
Scrivi una volta, esegui ovunque
Questo significa che i programmi Java possono essere eseguiti su qualsiasi dispositivo dotato di Java Virtual Machine (
JVM
).I principali vantaggi di Java includono:
- Programmazione Orientata agli Oggetti (OOP): Promuove codice modulare e riutilizzabile.
- Indipendenza dalla Piattaforma: Il codice compilato in bytecode può essere eseguito su qualsiasi JVM.
JVM, JDK e JRE
- JVM (Java Virtual Machine): Un motore che esegue il bytecode Java, rendendo i programmi indipendenti dalla piattaforma.
- JDK (Java Development Kit): Un ambiente di sviluppo per creare applicazioni Java. Include il compilatore (
javac
), il debugger e altri strumenti.
- JRE (Java Runtime Environment): Contiene librerie e la JVM necessarie per eseguire applicazioni Java, ma manca degli strumenti di sviluppo come il compilatore.
Il primo programma "Hello, World!"
Aprire un editor di testo e scrivere il seguente codice
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
- Salvare il file come
HelloWorld.java
.
- Aprire un terminale/command prompt, navigare nella directory del file e compilarlo utilizzando
javac HelloWorld.java
.
- Eseguire il programma con
java HelloWorld
.
Output:
Hello, World!
Sintassi e Struttura di Java
- Dichiarazione della Classe: Un programma Java inizia con la dichiarazione di una classe, ad esempio
public class HelloWorld
.
- Metodo Main: Il punto di ingresso di qualsiasi programma Java:
public static void main(String[] args) {}
.
- Istruzioni: Comandi, ognuno terminato con un punto e virgola (
;
).
- Blocchi: Racchiusi tra parentesi graffe
{}
.
2. Tipi di Dati e Variabili
Tipi Primitivi
Java ha
8
tipi primitivi:int
: Valori interi (es. , ).
double
: Numeri in virgola mobile (es. , ).
char
: Singoli caratteri (es. '', '').
boolean
: Valori logici ( o ).
byte
,short
,long
,float
: Altri tipi numerici con intervalli e precisioni diversi.
Esempio:
int age = 25; boolean isJavaFun = true; char grade = 'A'; double pi = 3.14159;
Tipi Non Primitivi
- String: Rappresenta una sequenza di caratteri. Esempio:
String name = "Java";
- Array: Memorizza più valori dello stesso tipo. Esempio:
int[] numbers = {1, 2, 3, 4};
Casting e Conversione di Tipi
- Casting Implicito: Conversione automatica da un tipo più piccolo a uno più grande (es.
int
adouble
).
int num = 10; double numDouble = num; // Casting implicito
- Casting Esplicito: Conversione manuale da un tipo più grande a uno più piccolo (es.
double
aint
).
double pi = 3.14159; int roundedPi = (int) pi; // Casting esplicito
3. Operatori
Operatori Aritmetici, Logici, Relazionali e di Assegnazione
- Operatori Aritmetici: Eseguono operazioni matematiche.
int sum = 5 + 3; // 8 int product = 5 * 3; // 15
- Operatori Logici: Combinano espressioni booleane.
boolean result = (5 > 3) && (8 > 5); // true
- Operatori Relazionali: Confrontano valori.
boolean isEqual = (5 == 5); // true
- Operatori di Assegnazione: Assegnano valori.
int x = 10; x += 5; // x = 15
Operatori di Incremento (++) e Decremento (--)
- Incremento: Incrementa un valore di 1.
int a = 5; a++; // a = 6
- Decremento: Decrementa un valore di 1.
int b = 5; b--; // b = 4
Precedenza degli Operatori
Gli operatori hanno un ordine di esecuzione predefinito. Ad esempio:
int result = 5 + 3 * 2; // La moltiplicazione (*) viene eseguita prima dell'addizione (+)
4. Strutture di Controllo
Istruzioni Condizionali
- Istruzione
if
: Esegue un blocco se una condizione è vera.
if (age > 18) { System.out.println("Sei un adulto."); }
- Istruzione
if-else
: Esegue un blocco se è vera, un altro se falsa.
if (age > 18) { System.out.println("Adulto"); } else { System.out.println("Non adulto");
- Istruzione
switch
: Seleziona un blocco da eseguire in base al valore di una variabile.
switch (day) { case 1: System.out.println("Lunedì"); break; case 2: System.out.println("Martedì"); break; default: System.out.println("Altro giorno"); }
Cicli
- Ciclo
for
: Ripete un blocco per un numero specifico di volte.
for (int i = 0; i < 5; i++) { System.out.println(i); }
- Ciclo
while
: Ripete un blocco finché una condizione è vera.
int i = 0; while (i < 5) { System.out.println(i); i++; }
- Ciclo
do-while
: Esegue un blocco almeno una volta, poi ripete finché una condizione è vera.
int i = 0; do { System.out.println(i); i++; } while (i < 5);
Break, Continue e Return
Break
: Esce dal ciclo o dall'istruzione switch corrente.
for (int i = 0; i < 5; i++) { if (i == 3) break; System.out.println(i); }
Continue
: Salta il resto dell'iterazione corrente del ciclo.
for (int i = 0; i < 5; i++) { if (i == 3) continue; System.out.println(i); }
Return
: Esce da un metodo e opzionalmente restituisce un valore.
public int add(int a, int b) { return a + b; }