Visualizzazione dei risultati da 1 a 4 su 4

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Lodin Visualizza il messaggio
    sto codice infatti restituisce "diversi" e fin qui tutto chiaro.
    Sì, sono oggetti diversi.

    Quote Originariamente inviata da Lodin Visualizza il messaggio
    s1 == s2 perchè c'è l'istruzione s2 = s1?
    Sì, se non ci fosse, s2 resterebbe null e ovviamente s1 == s2 darebbe false.

    Quote Originariamente inviata da Lodin Visualizza il messaggio
    fa puntare s2 allo stesso indirizzo di s1 o copia il valore di s1 in s2?
    Hai detto due cose che in realtà sono la STESSA cosa. Un reference è valore. Assegnare s1 a s2 significa copiare il valore (il reference) contenuto in s1 nella variabile s2 e quindi alla fine significa che entrambe le variabili faranno riferimento allo STESSO oggetto.

    Quote Originariamente inviata da Lodin Visualizza il messaggio
    ma se poi provo a cambiare il valore di s2, dovrebbe cambiare anche il valore di s1 e ciò non accade!
    No assolutamente. Se dopo s2 = s1; vai ad assegnare "qualcos'altro" a s2, questo NON cambia nulla in s1 !
    Sono comunque variabili distinte.

    Quote Originariamente inviata da Lodin Visualizza il messaggio
    Domanda bonus: una classe è incapsulata solo quando tutte le sue varabili sono private giusto? non è necessario che tale classe disponga anche di metodi che permettano di accedere alle varabili...giusto?
    Riferito alle variabili di istanza, hai l'incapsulamento completo quando nessuna delle variabili è accessibile direttamente dall'esterno. Poi naturalmente servono i metodi "accessori" (getter e/o setter).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    55
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Sì, sono oggetti diversi.


    Sì, se non ci fosse, s2 resterebbe null e ovviamente s1 == s2 darebbe false.


    Hai detto due cose che in realtà sono la STESSA cosa. Un reference è valore. Assegnare s1 a s2 significa copiare il valore (il reference) contenuto in s1 nella variabile s2 e quindi alla fine significa che entrambe le variabili faranno riferimento allo STESSO oggetto.


    No assolutamente. Se dopo s2 = s1; vai ad assegnare "qualcos'altro" a s2, questo NON cambia nulla in s1 !
    Sono comunque variabili distinte.


    Riferito alle variabili di istanza, hai l'incapsulamento completo quando nessuna delle variabili è accessibile direttamente dall'esterno. Poi naturalmente servono i metodi "accessori" (getter e/o setter).

    Potresti spiegarmi come mai in questo esercizio b1 è uguale a b2?:

    codice:
    class C {
    private Boolean b3 = new Boolean(true);
    private Boolean b4;
    private String s4 = new String("ab");
    private String s5;
    
    void p() {
     String s3;
     s3 = new String("abcde");
     b4 = b3;
     s5 = new String("ab");
     q(s3, b3, b4);
    }
    
    void q(String s2, Boolean b1, Boolean b2){
     String s1;
     s1 = new String("abcde");
     if(s2 == s1) {
      System.out.print(1);
     } else {
      System.out.print(0);
     }
     if(b1 == b2) {
      System.out.print(1);
     } else {
      System.out.print(0);
     }
     if(s4 == s5) {
      System.out.print(1);
     } else {
      System.out.print(0);
     }
    }
    }
    b1 e b2 hanno entrambi valore true (perchè in p b4=b3) ma essendop tipi non primitvi, il loro confronto con == non dovrebbe restituire 0?

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Lodin Visualizza il messaggio
    b1 e b2 hanno entrambi valore true (perchè in p b4=b3) ma essendop tipi non primitvi, il loro confronto con == non dovrebbe restituire 0?
    Per via del b4 = b3; le due variabili hanno lo stesso valore ovvero il medesimo riferimento ad un singolo oggetto Boolean. Vengono poi passate a q() come b1 e b2 e quindi b1 == b2 così è "vero".

    Con i tipi reference, == confronta il valore del riferimento. Quindi x == y è true solo se le due variabili x e y hanno entrambe una copia di un riferimento ad un certo oggetto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2026 vBulletin Solutions, Inc. All rights reserved.