web-dev-qa-db-fra.com

Quelle est la différence entre booléen et booléen en Java?

Je voudrais comprendre la différence entre les types Boolean et boolean en Java, en particulier en ce qui concerne GWT. Je sais que les méthodes ne sont pas prises en charge mais je veux plus d'informations si elles sont disponibles.

55
roundcrisis

Je ne sais pas si le facteur GWT fait une différence mais en général:

booléen est un type primitif Java alors que Booléen est un type objet/référence qui encapsule un booléen

La conversion entre des primitives et des objets comme celui-ci est connue sous le nom de boxing/unboxing.

Voici plus d'informations:

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

Pourquoi vous demandez la boîte?

http://Java.Sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html

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

34
cakeforcerberus

C'est assez simple et la même chose pour GWT et Java:

  • booléen peut être oui ou non
  • Boolean peut être yes, no ou NULL.

Donc, sauf si vous avez besoin du NULL (comme par exemple votre chargement du champ à partir de la base de données, et que vous voulez que NULL soit différent de false), restez sur booléen.

105
rustyshelf

En Java, un boolean est un littéral true ou false, tandis que Boolean est un wrapper d'objet pour un boolean.

Il y a rarement une raison d'utiliser un Boolean sur un boolean sauf dans les cas où une référence d'objet est requise, comme dans un List.

Boolean contient également la méthode statique parseBoolean(String s) , que vous connaissez peut-être déjà.

10
Michael Myers

Étant donné que Boolean peut être null, il peut être utilisé pour le chargement différé.

if(hasRoots == null){
   calculateRoots();
}
6
Michael Munsey

Java a des types primitifs (int, booléen, float, etc.) et chaque fois que vous souhaitez les utiliser comme instance d'un objet, ils sont enveloppés dans un type de classe associé. Par exemple, les booléens sont enveloppés par des booléens, int comme entier, etc.

Il a aussi ses avantages. boolean n'a pas de méthodes d'assistance (car ce n'est pas une classe), mais Boolean en a. Donc, si vous voulez convertir une chaîne en booléen, vous pouvez essayer Boolean.valueOf ("true").

J'espère que ça t'as aidé.

5
Allain Lalonde

boolean est un type primitif tandis que Boolean est une classe wrapper. La même chose s'applique pour (int, Integer), (long, Long) etc. Les classes wrapper "enveloppent" le type de données primitif respectif dans un objet de cette classe.

Ils sont utilisés avec les collections, car les types primitifs ne sont pas autorisés avec les collections. L'utilisation de classes wrapper vous donne également accès à de nombreuses méthodes que vous pouvez appeler sur cet objet. Par exemple. La classe wrapper de caractères a des méthodes comme:

isDigit () - pour déterminer si le caractère est un chiffre. isLower () - pour déterminer si le caractère est un alphabet minuscule. est la lettre () - pour déterminer si le caractère est un alphabet.

nous ne pouvons pas utiliser les méthodes ci-dessus si nous utilisons un type primitif par rapport à une classe wrapper.

1

En ce qui concerne GWT, ils sont les mêmes en GWT qu'en Java.
booléen est une primitive et booléen dans un wrapper d'objet.

1
Nick

Selon les documents d'émulation GWT JRE ( http://code.google.com/webtoolkit/doc/1.6/RefJreEmulation.html ) ces méthodes sont prises en charge sur le type booléen: booléen (booléen), booléen (String), parseBoolean (String), toString (boolean), valueOf (boolean), valueOf (String), booleanValue (), compareTo (Boolean), equals (Object), hashCode (), toString ()

quant à la différence entre les types d'objets booléens et booléens. Les objets booléens peuvent être dans 3 états, ce n'est donc pas exactement la même chose. Mais si cela fait une différence dans GWT (en termes de performances), je n'ai pas la moindre idée, je suppose que cela n'a pas beaucoup d'importance car le compilateur GWT optimisera le code et la plupart des opérations pourraient simplement correspondre à des opérations booléennes javascript natives.

Mais comme d'habitude: pour être certain, vous devez mesurer (et tenir compte du fait que cela peut différer selon le navigateur/la version que vous mesurez).

Le type d'objet booléen n'est normalement pas utilisé très souvent car le type natif booléen est plus naturel (vous n'avez pas besoin de vérifier la valeur null tout le temps).

1
David Nouls