LinguaggioJavaClassieOggetti (1)
-
Upload
alex-di-matteo -
Category
Documents
-
view
9 -
download
0
description
Transcript of LinguaggioJavaClassieOggetti (1)
![Page 1: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/1.jpg)
Le basi del linguaggio
JavaProf.ssa Mastrocesare e Prof. Notarantonio
![Page 2: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/2.jpg)
Compilazione e
interpretazione
Quando si compila il codice sorgente scritto in
Java, il compilatore genera il codice compilato,
chiamato bytecode.
E un codice generato per una macchina
astratta, detta Java Virtual Machine (JVM).
Per essere eseguito su una macchina reale, il
codice compilato (bytecode) deve essere
interpretato.
![Page 3: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/3.jpg)
Compilazione e
interpretazione
Java e un linguaggio interpretato, anche se la produzione del bytecode e effettuata con un’operazione di compilazione.
![Page 4: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/4.jpg)
Ambiente di programmazione con JDK (Java Development Kit) si possono scrivere e
compilare applet e applicazioni Java.
il compilatore e l’interprete sono eseguiti da riga di
comando.
software di tipo IDE (Integrated Development
Environment), cioè ambienti che facilitano lo sviluppo
dei programmi attraverso un’interfaccia grafica e una
modalità di programmazione visuale.
librerie contenenti classi e metodi
![Page 5: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/5.jpg)
Struttura di un programma
Java
un’applicazione può essere costituita da una o
più classi.
una si differenzia dalle altre perchè contiene il
metodo main().
l’esecuzione di un’applicazione Java comincia
eseguendo questo metodo.
![Page 6: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/6.jpg)
Struttura di un programma
Java
class <nome classe>
{
public static void main(String args[])
{
// dichiarazioni di variabili
. . .
// istruzioni
. . .
}
}
![Page 7: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/7.jpg)
Metodo main
public indica che il metodo e pubblico ed e
visibile
void indica che non ci sono valori di ritorno
static indica che il metodo e associato alla
classe e non può essere richiamato dai singoli
oggetti della classe.
![Page 8: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/8.jpg)
Identificatori e parole chiave
Gli identificatori sono i nomi che il
programmatore assegna per identificare le
variabili, i metodi e le classi.
Le parole chiave sono un insieme di parole
riservate di Java che non possono essere
usate come identificatori.
![Page 9: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/9.jpg)
Variabili Le variabili:
<tipo> <nome variabile>;
L’assegnamento:
<tipo> <nome variabile> = <valore iniziale>;
int prezzo;
double altezza = 1.83;
![Page 10: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/10.jpg)
Costanti
Una costante può assumere un solo valore
durante tutta l’esecuzione del programma:
final double YARD_METRO = 0.914;
![Page 11: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/11.jpg)
Il casting
Il casting e il meccanismo che consente al
programmatore di indicare la conversione da un tipo di dato a un altro tipo.
floatNum = 13.278f;
intNum = (int) floatNum;
![Page 12: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/12.jpg)
Operatori Le operazioni aritmetiche: +, -, *, /.
L’operatore % e usato per calcolare il resto.
Operatori di incremento e di decremento: ++ e – –.
L’assegnamento di un valore a una variabile viene eseguito usando l’operatore di assegnamento =.
Le stringhe possono essere concatenate tra loro usando l’operatore di concatenazione +.
i++;
![Page 13: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/13.jpg)
Operatori di confronto Operatori di confronto: l’operatore di uguaglianza è
rappresentato da due simboli di uguale (==).
La disuguaglianza (diverso da) e espressa usando
l’operatore !=.
Gli altri operatori di confronto sono <, <=, >, e >=.
if (voto == 6)
{
System.out.println("sufficiente");
}
![Page 14: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/14.jpg)
Operatori booleani L’operatore && (oppure &) indica l’operazione
di AND.
L’operatore || (oppure |) indica l’operazione di
OR.
La negazione NOT viene espressa con
l’operatore !.
![Page 15: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/15.jpg)
Standard output
System.out rappresenta un oggetto associato
allo standard output. Esiste anche un oggetto
associato allo standard error che e System.err.
System.out.println("messaggio da visualizzare");
![Page 16: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/16.jpg)
Standard input System.in gestisce il flusso di dati inseriti da tastiera.
classe BufferedReader
lettura di una stringa:
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader tastiera = new BufferedReader(input);
String nome;
nome = tastiera.readLine();
![Page 17: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/17.jpg)
Struttura di sequenza
La struttura di sequenza viene realizzata posizionando le
istruzioni una di seguito all’altra e separandole con il
punto e virgola.
Ogni dichiarazione e istruzione deve terminare con il
punto e virgola.
![Page 18: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/18.jpg)
Struttura di selezione La struttura di selezione:
if (condizione)
{
// istruzioni eseguite se la condizione e vera
}
else
{
// istruzioni eseguite se la condizione e falsa
}
![Page 19: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/19.jpg)
Selezione multipla La struttura di selezione multipla:
switch (espressione)
{
case valore1: // istruzioni
break;
case valore2: // istruzioni
break;
. . . .
default: // istruzioni
break;
}
![Page 20: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/20.jpg)
Struttura di ripetizione while
while (condizione)
{
// istruzioni
}
![Page 21: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/21.jpg)
Struttura di ripetizione • do while
• for
do
{
// istruzioni
}
while (condizione);
for (inizializzazione; condizione; aggiornamento)
{
// istruzioni
}
![Page 22: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/22.jpg)
Eccezioni Un’eccezione e una situazione anomala che si verifica
durante l’esecuzione del programma.
try
{
// istruzioni da controllare
}
catch(eccezione)
{
// operazioni da eseguire se si verifica l'eccezione
}
![Page 23: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/23.jpg)
Eccezioni predefinite
ArithmeticException: segnala errori aritmetici
NullPointerException: errore dovuto all’utilizzo di un
riferimento che possiede il valore null
IndexOutOfBoundException: errore nell’indice di un
array
IOException: generico errore di input/output.
![Page 24: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/24.jpg)
Classi e oggetti
![Page 25: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/25.jpg)
Oggetti
La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall’elemento su cui si basa, l’oggetto.
![Page 26: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/26.jpg)
OOPVantaggi
facilita di lettura e di comprensione del codice
rapidità nella manutenzione
robustezza
riusabilità del codice
![Page 27: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/27.jpg)
Oggetti
Gli oggetti rappresentano le entità del problema o della realtà che si vuole automatizzare con l’informatica.
Un oggetto e in grado di memorizzare le informazioni che riguardano il suo stato
E possibile associare a un oggetto un insieme di operazioni che esso può compiere.
![Page 28: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/28.jpg)
Attributi e metodi
Gli attributi rappresentano gli elementi che
caratterizzano l’oggetto, utili per descrivere le sue
proprietà e definirne il suo stato.
I metodi rappresentano le funzionalità che
l’oggetto mette a disposizione.
![Page 29: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/29.jpg)
Definizione delle classi
Diagramma delle classi
La classe e la descrizione astratta degli oggetti attraverso
gli attributi e i metodi.
<nome classe>
<attributo1>
<attributo2>
. . .
<metodo1>
<metodo2>
. . .
I simboli utilizzati negli
schemi grafici rispettano gli
standard del linguaggio
UML (Unified Modeling
Language)
![Page 30: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/30.jpg)
Istanza
Diagramma degli oggetti
Per utilizzare un oggetto occorre crearlo come esemplare
della classe, cioè come istanza di una classe.
auto1
velocità = 60
colore = rosso
numero di porte = 5
livello del carburante = ½
posizione della marcia = 3
Ogni classe possiede un
particolare metodo
predefinito, detto
costruttore, che viene
attivato quando si crea un
oggetto.
![Page 31: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/31.jpg)
Il termine incapsulamento indica la proprietà degli oggetti
di incorporare al loro interno sia gli attributi che i metodi,
cioè le caratteristiche e i comportamenti dell’oggetto.
Incapsulamento
![Page 32: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/32.jpg)
Dichiarazione di una classe
class NomeClasse
{
// attributi
// metodi
}
![Page 33: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/33.jpg)
Dichiarazione di un oggetto dichiarazione di un oggetto:
creazione dell’istanza:
NomeClasse nomeOggetto;
nomeOggetto = new NomeClasse();
![Page 34: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/34.jpg)
Dichiarazione di un attributo dichiarazione di un attributo:
Esempi:
livelloDiVisibilità tipo nomeAttributo;
private int x, y, z;
public double altezza = 15.76;
![Page 35: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/35.jpg)
Livelli di visibilità
public
l’attributo è accessibile da qualsiasi altra classe
private
permette di nascondere l’attributo all’interno
dell’oggetto
protected
è visto all’esterno solo dalle classi che appartengono
alla stessa libreria oppure dalle sottoclassi della
classe in cui è stato dichiarato l’attributo.
![Page 36: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/36.jpg)
Altre caratteristiche
staticindica un attributo legato alla classe
finalse lo si vuole rendere una costante, in modo che possa
assumere un unico valore.
![Page 37: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/37.jpg)
Dichiarazione dei metodi
livelloDiVisibilità tipoRestituito nomeMetodo (parametri)
{
// variabili
// istruzioni
}
![Page 38: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/38.jpg)
Esempio Il metodo che esegue la somma di due numeri interi
passati come parametri:
public int addizione (int a, int b)
{
int sum;
sum = a+b;
return sum;
}
![Page 39: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/39.jpg)
Valore di ritorno Il tipo del valore di ritorno indica quale sarà il valore
restituito al termine dell’esecuzione del metodo.
Un metodo può anche non restituire alcun valore: parola
chiave void.
public void setRaggio(double r)
{
raggio = r;
}
![Page 40: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/40.jpg)
Istruzione return
public int max(int a, int b)
{
if (a > b)
{
return a;
}
else
{
return b;
}
}
![Page 41: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/41.jpg)
Livelli di visibilità
I livelli di visibilità di un metodo:
publicpuò essere richiamato da qualunque altra classe
privatenon può essere richiamato esternamente alla classe in cui è dichiarato
protectedè visibile solo dalle classi che appartengono alla stessa libreria oppure dalle sottoclassi della classe in cui è dichiarato
![Page 42: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/42.jpg)
Creazione di oggetti L’allocazione dell’oggetto riserva lo spazio per
memorizzare gli attributi dell’oggetto e viene codificata con
l’operatore new seguito dal nome della classe.
Viene attivato in modo implicito un particolare metodo
predefinito, detto costruttore della classe, che consente di
creare un oggetto.
Cerchio tavolo = new Cerchio();
![Page 43: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/43.jpg)
Creazione di oggetti
Creare un’istanza della classe Cerchio usando il
costruttore e indicando un valore di inizializzazione
per l’attributo raggio.
Cerchio ruota = new Cerchio(0.41);
![Page 44: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/44.jpg)
Utilizzo degli oggetti Accesso agli attributi di un oggetto con l’operatore punto:
Invocazione di un metodo:
In ogni classe è implicitamente presente un oggetto speciale identificato dalla parola chiave this, per indicare l’oggetto a cui il costruttore si riferisce.
nomeOggetto.attributo
nomeOggetto.metodo(parametri)
![Page 45: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/45.jpg)
Information hiding
Metodi per leggere e modificare il valore degli
attributi:
get: leggere il valore di un attributo e
restituirlo
set: modificare il valore di un attributo.
Il termine information hiding indica il mascheramento
delle modalità di implementazione di un’oggetto,
rendendone disponibile all’esterno solo le funzionalità.
![Page 46: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/46.jpg)
Esempioclass Automobile
{
private final int POSIZIONE_MAX = 6;
private int posMarcia;
public Automobile()
{
posMarcia = 1;
}
public int getMarcia()
{
return posMarcia;
}
public void setMarcia(int m)
{
if ((m >= 1) && (m <= POSIZIONE_MAX))
{
posMarcia = m;
}
}
}
![Page 47: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/47.jpg)
Interfaccia il termine interfaccia riferito alle classi:
per esempio, l’interfaccia della classe Automobile:
I dettagli sulle caratteristiche e la struttura dell’oggetto
sono nascosti all’interno, garantendo l’information
hiding (mascheramento dell’informazione).
L’interfaccia di una classe indica l’elenco dei metodi
pubblici, cioè l’insieme delle funzionalità utilizzabili dalle
istanze della classe.
public Automobile()
public int getMarcia()
public void setMarcia(int m)
![Page 48: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/48.jpg)
EreditarietàL’ereditarietà rappresenta la possibilità di creare nuove classi
a partire da una classe già esistente (classe base). La nuova
classe eredita tutti gli attributi e i metodi della classe base e
può essere arricchita con nuovi attributi e nuovi metodi. La
classe così ottenuta si chiama classe derivata..
![Page 49: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/49.jpg)
Sottoclasse e superclasse
La classe che è stata derivata da un’altra usando
l’ereditarietà prende il nome di sottoclasse.
La classe generatrice di una sottoclasse si chiama
superclasse o sopraclasse.
![Page 50: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/50.jpg)
Grafo di gerarchia
![Page 51: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/51.jpg)
Classe derivata
La nuova classe si differenzia dalla sopraclasse:
per estensione: la sottoclasse aggiunge nuovi
attributi e metodi
per ridefinizione: la sottoclasse ridefinisce i metodi
ereditati (overriding del metodo)
![Page 52: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/52.jpg)
Dichiarazione di una
sottoclasse
class NomeSottoClasse extends NomeSopraClasse
{
. . .
}
![Page 53: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/53.jpg)
Classe ObjectClasse da cui vengono derivate tutte le altre
![Page 54: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/54.jpg)
Polimorfismo
Due tipi di polimorfismo:
l’overriding, o sovrapposizione dei metodi,
l’overloading, o sovraccarico dei metodi.
Il polimorfismo indica la possibilità per i metodi di
assumere forme, cioè implementazioni, diverse all’interno
della gerarchia delle classi.
![Page 55: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/55.jpg)
LibrerieLe librerie sono un insieme di classi già compilate che possono essere richiamate e usate all’interno dei programmi. Java usa il termine package.
Esempi:
• java.applet
• java.awt
• java.io
• java.lang
• java.net
• java.util
![Page 56: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/56.jpg)
LibreriePer riferirsi a una classe contenuta in un particolare package:
Per evitare di ripetere più volte il nome del package:
comando import
NomePackage.NomeClasse
import java.awt.Button
Button b;
b = new Button();
;
![Page 57: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/57.jpg)
LibreriePer importare tutte le classi contenute nel package java.io:
Il package java.lang contiene la dichiarazione delle classi
di base del linguaggio Java.
import java.io.*;;
![Page 58: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/58.jpg)
Classe StringInclusa nel package java.lang.
Per usare le stringhe in Java si deve creare un oggetto
di classe String.
altro modo per allocare le stringhe:
String nome = new String("Elena");
String nome = "Laura";
![Page 59: LinguaggioJavaClassieOggetti (1)](https://reader033.fdocumenti.com/reader033/viewer/2022042821/563dbac9550346aa9aa80bb6/html5/thumbnails/59.jpg)
Classe String