web-dev-qa-db-ja.com

Javaのブール値とブール値の違いは何ですか?

JavaのBoolean型とboolean型の違い、特にGWTに関連するものについて理解したいと思います。メソッドがサポートされていないことは知っていますが、利用可能な場合は詳細情報が必要です。

55
roundcrisis

GWTファクターが違いを生むかどうかはわかりませんが、一般的には:

booleanはJavaプリミティブ型であるのに対しBooleanは、ブール値をラップするオブジェクト/参照型です

このようなプリミティブとオブジェクト間の変換は、ボクシング/アンボクシングと呼ばれます。

詳細は次のとおりです。

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

なぜあなたは尋ねるのですか?

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

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

34
cakeforcerberus

それはかなりシンプルで、GWTとJavaでも同じです。

  • ブール値はyesまたはnoです。
  • ブール値は、yes、no、またはNULLです。

したがって、NULLが必要な場合(たとえば、データベースからフィールドをロードする場合、およびNULLをfalseとは異なるようにする場合)は、ブール値に固執します。

105
rustyshelf

Javaでは、booleanはリテラルtrueまたはfalseですが、 Booleanboolean

Booleanのようなオブジェクト参照が必要な場合を除いて、booleanの代わりにListを使用する理由はほとんどありません。

Booleanには静的メソッド parseBoolean(String s) も含まれています。

10
Michael Myers

ブール値はnullになる可能性があるため、遅延読み込みに使用できます。

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

Javaにはプリミティブ型(int、boolean、floatなど)があり、それらをオブジェクトのインスタンスとして使用する場合はいつでも、関連するClass型にラップされます。たとえば、ブール値はブール値、整数などの整数でラップされます。

それにも利点があります。ブールにはヘルパーメソッドがありません(クラスではないため)が、ブールにはあります。したがって、文字列をブール値に変換する場合は、Boolean.valueOf( "true")を試すことができます。

お役に立てば幸いです。

5
Allain Lalonde

ブールはプリミティブ型ですが、ブールはラッパークラスです。同じことが(int、Integer)、(long、Long)などに適用されます。ラッパークラスは、それぞれのプリミティブデータ型をそのクラスのオブジェクトに「ラップ」します。

コレクションではプリミティブ型が許可されていないため、コレクションで使用されます。また、ラッパークラスを使用すると、そのオブジェクトで呼び出すことができる多くのメソッドにアクセスできます。文字ラッパークラスには次のようなメソッドがあります。

isDigit()–文字が数字かどうかを判断します。 isLower()–文字が小文字のアルファベットかどうかを判断します。 is Letter()–文字がアルファベットかどうかを判断します。

ラッパークラスと比較してプリミティブ型を使用する場合、上記のメソッドは使用できません。

1

GWTに関する限り、GWTでもJavaと同じです。
booleanはプリミティブであり、ブールオブジェクトラッパー内。

1
Nick

GWT JREエミュレーションドキュメント(- http://code.google.com/webtoolkit/doc/1.6/RefJreEmulation.html )によると、これらのメソッドはブール型でサポートされています:Boolean(boolean)、Boolean (String)、parseBoolean(String)、toString(boolean)、valueOf(boolean)、valueOf(String)、booleanValue()、compareTo(Boolean)、equals(Object)、hashCode()、toString()

ブールオブジェクトタイプとブールオブジェクトタイプの違いについて。ブールオブジェクトは3つの状態になることがあるため、まったく同じではありません。しかし、それがGWT(パフォーマンスの面で)に違いをもたらす場合、私は手がかりを持っていませんが、GWTコンパイラーはコードを最適化し、ほとんどの操作はネイティブのjavascriptブール操作に単純にマッピングできるので、それは大した問題ではないと思います。

しかし、いつものように、確実に測定する必要があります(測定するブラウザー/バージョンによって異なる可能性があることを考慮してください)。

ブールネイティブタイプはより自然であるため、ブールオブジェクトタイプは通常あまり使用されません(常にnullをチェックする必要はありません)。

1
David Nouls