Salve!
Sono alle primissime armi con Java e, facendo qualche esercizio quest'oggi, mi son trovato a sbagliare spesse volte questa cosa.
Il codice era questo ( in varie salse, con numeri di telefono, nomi e via dicendo:
public class Libro {
private String titolo;
public Libro(String titolo){
this.titolo = titolo;
}
public String getTitolo(){
return this.titolo;
}
public String cambiaTitolo(String titolo){
String vecchioTitolo;
vecchioTitolo = this.titolo;
this.titolo = titolo;
return vecchioTitolo;
}
public static void main(String[] args) {
Libro l1 = new Libro("Cime Tempestose");
Libro l2 = new Libro("Il giocatore");
l1.cambiaTitolo(l2.cambiaTitolo("Il signore degli Anelli"));
System.out.println(l1.getTitolo());
System.out.println(l2.getTitolo());
l1 = l2;
l1.cambiaTitolo(l2.cambiaTitolo("Shining"));
System.out.println(l1.getTitolo());
System.out.println(l2.getTitolo());
}
}
Che come stampa da:
Il giocatore
Il Signore degli Anelli
Il Signore degli Anelli
Il Signore degli Anelli
Credo che le parti non chiare siano:
l1.cambiaTitolo(l2.cambiaTitolo("Il signore degli Anelli"));
Perchè l1 diventa "Il giocatore" e non "Il Signore degli anelli"? Non viene prima eseguito ciò che è tra parentesi, quindi il cambio titolo di l2 da Il giocatore a Il Signore degli anelli, e poi il cambio di l1 da Come Tempestose a Il Signore degli anelli essendo il nuovo l2?
ed anche
l1 = l2;
l1.cambiaTitolo(l2.cambiaTitolo("Shining"));
Perchè Shining non compare proprio?
Grazie mille e scusate per la domanda banale!!!!