Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    53

    differenza operatori logici doppi e singoli

    salve ragazzi, ho un dubbio in testa che nn riesco a risolvere: c'è differenza nello scrivere & o &&, e | oppure || ?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: differenza operatori logici doppi e singoli

    Originariamente inviato da DiEgOvEs
    salve ragazzi, ho un dubbio in testa che nn riesco a risolvere: c'è differenza nello scrivere & o &&, e | oppure || ?
    Quelli doppi hanno un comportamento che viene chiamato "short-circuit". Ovvero il secondo operando non viene nemmeno valutato se dal primo operando si può già determinare il risultato complessivo.

    x < 5 && y > 4

    Se x < 5 è false, si sa già che il risultato complessivo della AND è false perché qualunque sia il risultato di y > 4 (true o false), non cambierebbe nulla per la AND. Pertanto y > 4 non viene affatto valutato.
    Se sono semplici variabili non cambierebbe molto ma immagina che ci sia y++ > 4. Con un && la comparazione y > 4 e poi il post-incremento di y vengono fatti solo se x < 5 è true!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    53
    ok grazie mille per il chiarimento...! quindi comunque queste abbreviazioni non hanno molto senso nel caso dell'or giusto?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da DiEgOvEs
    quindi comunque queste abbreviazioni non hanno molto senso nel caso dell'or giusto?
    No, vale anche per l'OR: | non short-circuit e || che è short-circuit. In x || y, se x è true, allora y non viene valutato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    andibin, ti faccio la domanda al contrario allora..
    io da 10 anni uso sempre e solo quelli doppi, non conoscevo sta differenza...
    a cosa serve il singolo | o il singolo &..??
    mi sembra meglio usare sempre il doppio no ??
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    53
    idealmente riducono le operazioni di confronto... ragionando in maniera "infinita" se hai un if con infinite preposizioni, con quelle doppie le analizza tutte, con le singole appena vede che va bene, parte subito con le istruzioni successive, riducendo il tempo di analisi

  7. #7
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Originariamente inviato da DiEgOvEs
    idealmente riducono le operazioni di confronto... ragionando in maniera "infinita" se hai un if con infinite preposizioni, con quelle doppie le analizza tutte, con le singole appena vede che va bene, parte subito con le istruzioni successive, riducendo il tempo di analisi
    ah avevo capito il contrario..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    53
    si scusami è il contrario...ho fatto confusione...!

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da morphy79
    mi sembra meglio usare sempre il doppio no ??
    Dipende .... ci sono dei casi in cui serve assolutamente il doppio invece che il singolo.

    Esempio:

    codice:
    public void metodo(String s) {
        if (s != null && s.length() > 0) {   // Solo se s non è null e non è vuoto
            ....
        }
    }
    Se s fosse null (quindi s != null è false) allora NON deve fare s.length() altrimenti lancerebbe un bel NullPointerException!! Quindi con && si ha il "short-circuit" e in questo caso è assolutamente appropriato e anzi necessario.

    Se avessi usato solo &, se s è diverso da null allora testa la lunghezza che è fattibile. Ma se s fosse null farebbe comunque il secondo test sulla lunghezza e allora sarebbe un problema.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Originariamente inviato da andbin
    Dipende .... ci sono dei casi in cui serve assolutamente il doppio invece che il singolo.

    Esempio:

    codice:
    public void metodo(String s) {
        if (s != null && s.length() > 0) {   // Solo se s non è null e non è vuoto
            ....
        }
    }
    Se s fosse null (quindi s != null è false) allora NON deve fare s.length() altrimenti lancerebbe un bel NullPointerException!! Quindi con && si ha il "short-circuit" e in questo caso è assolutamente appropriato e anzi necessario.

    Se avessi usato solo &, se s è diverso da null allora testa la lunghezza che è fattibile. Ma se s fosse null farebbe comunque il secondo test sulla lunghezza e allora sarebbe un problema.
    capito grazie, ma il dubbio rimane..
    un solo & a che serve ??
    non conviene sempre usare && (come tra l'altro faccio) ??
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

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.