Visualizzazione dei risultati da 1 a 10 su 11

Visualizzazione discussione

  1. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Il motivo è semplice: l'operatore di confronto == lavora sul valore del reference, non sull'oggetto puntato dal reference. Di conseguenza x e y sono due oggetti distinti, ciascuno con un proprio indirizzo in memoria... il confronto fatto con == guarda gli indirizzi di memoria. Se vuoi confrontare due oggetti devi usare il metodo equals() (forse l'hai già visto per le stringhe, che sono anch'esse oggetti).

    codice:
    Integer x = new Integer( 1000 );
    Integer y = new Integer( 1000 );
    
    boolean confronto1 = (x == y);        // falso: due indirizzi diversi
    boolean confronto2 = x.equals( y );   // vero: si guarda il contenuto
    
    x = y;
    boolean confronto3 = (x == y);        // vero: entrambi puntano allo stesso oggetto

    Ciao.
    Ultima modifica di LeleFT; 20-11-2018 a 11:52
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.