Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Confronto tra String

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    55

    Confronto tra String

    Salve a tutti, ho un problema con questo codice:
    codice:
    private String s1 = "";private String s2;
    private float [] a3 = new float [8];
    private float [] a4;
    void p() {
    String s4 = s1.concat("abcd");
    String s6;
    String s8 = "";
    s2 = s1.concat("abcd");
    s6 = "";
    a4 = a3;
    q(s4, s6, s8, a4, a3);
    }
    
    
    void q(String s3, String s5, String s7,
    float[] a1, Object a2){
    if(s3 == s2) {
    System.out.print(1);
    } else {
    System.out.print(0);
    }
    if(s5 == s7) {
    System.out.print(1);
    } else {
    System.out.print(0);
    }
    if(a2 == a1) {
    System.out.print(1);
    } else {
    System.out.print(0);
    }
    }
    public static void main(String argvs[])
    {
    Building x = new Building();
    x.p();
    }
    }
    perchè quando confronta s5 ed s7 l'if restituisce true? due String essendo di tipo reference, quando confrontate, il confronto si applica sugli indirizzi e non sul valore effettivo, quindi s5 == s7 dovrebbe restituire false.
    Qualcuno mi spiega dove sto sbagliando? ho rivisto il codice più volte e non mi pare che in qualche punto, l'inidirizzo di s6 vada a corrispondere con quello di s8 :/

  2. #2
    ciao!

    http://forum.html.it/forum/showthread/t-633509.html
    vedi se ti è d'aiuto.

    cmq per le stringhe è meglio usare equals.
    Ultima modifica di fermat; 06-09-2016 a 17:35

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    == applicato agli oggetti, si basa solo sulla "identità" degli oggetti, ovvero confronta il valore dei due reference. Se due variabili reference a e b sono uguali, allora vuol dire che a e b fanno riferimento allo STESSO oggetto.

    Quote Originariamente inviata da Lodin Visualizza il messaggio
    perchè quando confronta s5 ed s7 l'if restituisce true?
    I parametri s5/s7 di q ricevono s6 e s8 del chiamante, che sono:

    String s6;
    String s8 = "";
    s6 = "";

    Entrambi hanno una stringa vuota. Sembrerebbero due oggetti String diversi ma NON è così. Le stringhe letterali che sono uguali nel sorgente vengono messe nel constant pool una volta sola.

    String a = "pippo";
    String b = "pippo";

    qui NON sono due oggetti string, nel constant pool c'è un solo "pippo" e a e b hanno lo stesso reference.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Mi sembra i concetti li abbia abbastanza chiari; ogni tanto si perdono di vista le cose più semplici:
    s6 = new String("");

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    55
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ciao!

    http://forum.html.it/forum/showthread/t-633509.html
    vedi se ti è d'aiuto.

    cmq per le stringhe è meglio usare equals.
    sì era proprio quello che cercavo! grazie mille!

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.