2009-08-18 2 views

risposta

32

non sono sicuro se il fattore GWT fa la differenza, ma in generale:

booleano è un tipo primitivo Java mentre booleano è un tipo di oggetto/riferimento che avvolge un valore booleano

La conversione tra primitive e oggetti come questo è nota come box/unboxing.

Ecco ulteriori informazioni:

http://javaeye.wordpress.com/2008/06/17/boxing-and-unboxing-conversion/

Perché inscatolare si chiede?

http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html

http://www.javapractices.com/topic/TopicAction.do?Id=197

9

In Java, un boolean è un letterale true o false, mentre Boolean è un involucro per un oggetto boolean.

c'è raramente una ragione per usare un Boolean su un boolean tranne nei casi in cui è richiesto un riferimento all'oggetto, ad esempio in un List.

Boolean contiene anche il metodo statico parseBoolean(String s), di cui si può già essere a conoscenza.

5

Java ha tipi primitivi (int, boolean, galleggiante, ecc) e in qualsiasi momento si desidera usarli come un'istanza di un oggetto sono avvolti in un tipo di classe associata. Ad esempio, i booleani vengono incapsulati da Booleans, int come Integer ecc.

Anche i suoi vantaggi. boolean non ha metodi helper (dato che non è una classe), ma Boolean lo fa. Quindi, se volessi convertire una stringa in un booleano, potresti provare Boolean.valueOf ("true").

Spero che questo aiuti.

1

Per quanto riguarda GWT, sono uguali in GWT come in Java.
booleano è un valore primitivo e Boolean in un involucro di oggetti.

92

è abbastanza semplice e lo stesso per GWT e Java:

  • booleana può essere sì o no
  • booleana può essere sì, no o NULL.

Quindi, a meno che non hanno bisogno della NULL (come ad esempio il carico il campo dal database, e si desidera NULL di essere diverso da false) quindi attenersi ad booleani.

+6

Bello ... veloce e sporco! =) –

+18

non c'è niente di sporco. – rustyshelf

+0

Tnx così tanto !!! Quindi utile e chiaro espulsione – AndreaNobili

1

Secondo la documentazione di emulazione GWT JRE (http://code.google.com/webtoolkit/doc/1.6/RefJreEmulation.html) questi metodi sono supportati dal tipo booleano: booleano (booleano), booleano (String), parseBoolean (String), toString (booleano), valueOf (booleano), valueOf (String), booleanValue(), compareTo (Boolean), equals (Object), hashCode(), toString()

per quanto riguarda la differenza tra tipi di oggetti booleani e booleani. Gli oggetti booleani possono essere in 3 stati, quindi non è esattamente la stessa cosa. Ma se questo fa la differenza in GWT (prestazioni saggio) non ne ho la minima idea, la mia ipotesi è che non importa molto dal momento che il compilatore GWT ottimizzerà il codice e la maggior parte delle operazioni potrebbe semplicemente mappare a operazioni booleane javascript native.

Ma come al solito: per essere certi è necessario misurare (e tenere conto che questo potrebbe differire in base al browser/versione che si sta misurando).

Il tipo di oggetto booleano non viene in genere utilizzato molto spesso poiché il tipo nativo booleano è più naturale (non è necessario verificare sempre per null).

5

Poiché Boolean può essere nullo, può essere utilizzato per il caricamento lazy.

if(hasRoots == null){ 
    calculateRoots(); 
} 
1

booleana è un tipo primitivo, mentre booleano è involucro class.Same applica for (int, Integer), (molto, molto), ecc classi wrapper "avvolgere" il rispettivo tipo di dati primitivi in ​​un oggetto di quel classe.

Vengono utilizzati con le raccolte, poiché i tipi primitivi non sono consentiti con le raccolte. Anche utilizzando le classi wrapper è possibile accedere a molti metodi che è possibile chiamare su quell'oggetto. Ad esempio. La classe wrapper di caratteri ha metodi come:

isDigit() - per determinare se il carattere è una cifra. isLower() - per determinare se il carattere è in minuscolo. è Letter() - per determinare se il carattere è un alfabeto.

non è possibile utilizzare i metodi precedenti se si utilizza un tipo primitivo rispetto a una classe wrapper.