ブーリアン
ブールと呼ばれるタイプは論理値を表す単純なJavaは、あります。その値はこれらの2つの値trueまたはfalseにすることができます。このような論理型の使用などの手順の以下の説明をすべてです。
1 // ブール値を示しています。 2 クラスBoolTest { 3 パブリック 静的 ボイドメイン(文字列引数[]){ 4 ブールB。 5 6 B = 偽。 7のSystem.out.println(+ "Bである" B)。 8、B = 真。 9のSystem.out.println(+ "Bである" B)。 10 // ブール値は、if文を制御することができる 11の 場合(B)のSystem.out.println( "これが実行されます" )。 12 B = 偽。 13 であれば(B)のSystem.out.println( "これは実行されません。" ); 14 // 関係演算子の結果は、ブール値である 15のSystem.out.println( "> 9 10は、" +(10> 9 ))。 16 } 17 }
次のようにこの手順の業績は以下のとおりです。
1つの bは偽 2 bは真 3 これが実行されます。4 10> 9である真
このプログラムについて注意するための3つの面白いものを持っています。まず第一に、あなたは、メソッドのprintln()出力ブール値は、ディスプレイに「true」または「false」であるとき、見てきました。第二に、ブール変数自体の値は、if文を制御するのに十分です。このようなif文を記述する必要はありませんありません。
1 の場合(B == 真)...
第三に、関係演算子(例えば<)結果は、ブール値です。表現10> 9の表示値が「真」である理由です。また、辺の追加の式10> 9括弧ため、より高い優先度にプラス演算子よりも「+」演算子「>」。
JAVAタイプは、間の論理とビット単位の違いをブール
結果から、演算結果の二種類は同じであるが、論理演算は、「短い」現象ではなく、ビット、及び論理演算よりもオフもう少し「排他的OR」関数となります。
短絡
1 クラスBR { 2 静的 ブールF1(){ 3 リターン 偽。 4 } 5 静的 ブールF2(){ 6 リターン 真。 7 } 8 静的 ブールF3(){ 9 リターン 真。 10 } 11 } 12 13 ブール値 F_1 = br.f1()&& br.f2()&& br.f3()。
それがfalseの場合、F1()ので、結果は&&後のすべては結果を知って、JAVAは少し平和活動の裏に「ショート」が発生を実行することなく、偽で、パフォーマンスが改善されました。
1つの ブール値 F_2 = br.f2()|| br.f1()|| br.f3()。
真の結果、同じF2()はもはや後ろのオペレーターとして、真です。
これは非常に便利で効率的なようだが、欠点が残っています。
1つの ブール F_3 = br.f2()|| br.f3()&& br.f1()。
結果は真となり、正しいが間違っている、「ショート」原因偽であるべきであり、あなたは括弧で追加する必要が正しい答えを得るしたいと思います:
1 F_3 =(br.f2()|| br.f3())&& br.f1()。
それは何の論理XOR関数ビット演算を提供していません。
1つの ブール = F 真 ^ 真。
F = falseの結果;
ブール値は、最終的に数バイトを占めましたか?
ブール型が占めるバイトの具体的な数を明らかにしなかった、明らかに他の7種類がありますなぜあなたはので、この質問を、私たちはメモリ使用量のバイト数に加えて、Javaの基本データ型で8を定義していますこのboolean型のために存在していない仮想マシンは、boolean型は、それが実際にboolean型を占めているどのように多くのバイトを表現するためにコンパイルされ、他のタイプのデータで使用されるのですか?:基本的なhttps://www.jianshu.com/p/2f663dc820d0のまとめによると質問、オンラインだけで検索、多様な答えが、以下の通りと
1、1ビット
その理由は、メモリに記憶することができる唯一の二つの数字(ビット)が必要コンパイル表すために使用される真の論理値0と1の2つだけ種類の偽のブール値であり、コンピュータ記憶ビットは、最小でありますユニット。
2,1バイト
理由がコンパイルされているが1と0だけ空間を占めるが、コンピュータデータの最小処理単位は1バイトであり、1つのバイトが8に等しく、実際のストレージ・スペースがある:最低1バイトビット次のように値が格納されたバイナリは、その後、該当する場合、ストレージ、0と他の7つを満たす:0000 0001、それが偽である場合、格納されたバイナリである:0000 0000。
3,4バイト
ソースの理由は、書籍「Java仮想マシン仕様」に記載されている:「ブールデータ型のこの定義は、それは、Java仮想マシン内の任意の特定のバイトなしブール値のためのサポートは非常に限定されていますが。コード命令、Java言語処理におけるブール式は、Java仮想マシンのバイト配列に符号化される代わりにブール配列Java仮想マシンをコンパイルした後、intデータ型を使用し、各要素は、ブール要素を表します8. " だから我々はboolean型を描くことができるということは、単独で使用されたアレイに4つのバイトを占めたバイトです。
明らかに、第三は、なぜ仮想マシンの代わりに、ブールがそれをint型なければならない、と言う方が正確でしょうか?なぜバイトまたは短いので、より多くのメモリ空間を保存しないでください。ほとんどの人は当然、この考えるだろう、私はまた、使用のint型の理由は、瞬間32ビットプロセッサ(CPU)のために、データ処理時間が32(ここではないということである、という情報へのアクセスを通じて、この質問を持っています32/64ビットシステムを指すのではなく、効率的なアクセスの特性を有する、)ハードウェアレベルのCPUを指します。
最終的な要約:
説明http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html公式文書によると:
ブール:trueとfalse:Booleanデータ型は、2つだけの可能な値を持っています。真/偽条件を追跡する簡単なフラグについては、このデータ型を使用します。このデータ型は、1ビットの情報を表すが、その「サイズ」は、正確に定義されていますものではありません。
ブール:trueとfalse:Booleanデータ型は、2つだけの可能な値を持っています。このデータ型は真/偽条件の簡単なタグを追跡するために使用されます。このデータ型は、この情報を表現するが、その「サイズ」は、正確に定義されていません。
図から分かるように、ブール値の型は正確な定義を与えられていないので、「Java仮想マシン仕様は、」4つのバイトを与え、実装が仕様に特定の仮想マシンに依存するかどうかを、ブールバイトの配列を定義します1つのバイトの4つのバイトが可能です。これは、両方のは非常に重要であり、実際の運用効率と収納スペースの間でゲームです。