Java のブール型はバイト数: 1.1 ビットを占めます。その理由は、ブール型の値には true と false の 2 つの論理値しかないためです。コンパイル後は 1 と 0 で表されます。 ; 2. 1 バイト、その理由は、1 と 0 はコンパイル後に 1 ビットのスペースしか占有しませんが、コンピュータによって処理されるデータの最小単位は 1 バイトであるためです。
なぜこの質問をしたいのですか? まず、Java で定義されている 8 つの基本データ型のうち、他の 7 型を除いて、メモリ占有バイトをクリアします。また、仮想マシンにはブール型が存在しないため、ブール型が占有する特定のバイト数は指定されません。ブール型は、コンパイル後に他のデータ型で表されます。バイト数ブール型はバイトを占めますか?疑問に思ってネットで調べてみると、基本的には以下の通りです:
1. 1 bit
理由は、boolean 型の値が true と true の 2 つの論理値しか持たないためです。 false. コンパイル後、それらは 1 と 0 で表されます。これら 2 つの数値は 1 ビット (ビット) をメモリに保存するだけで済みます。ビットはコンピュータの最小記憶単位です。
2. 1 バイト
理由は、1 と 0 はコンパイル後に 1 ビットのスペースしか占有しませんが、コンピュータがデータを処理する最小単位は 1 バイトであり、1 バイトは 8 ビットに等しいためです。 、実際の記憶領域は、1 バイトの最下位ビットを使用して格納し、他の 7 ビットを 0 で埋めます。値が true の場合、格納されるバイナリは 0000 0001、false の場合、格納されるバイナリは次のようになります。 0000 0000。
3, 4 バイト
理由は、「Java 仮想マシン仕様」の説明にあります。「ブール データ型は定義されていますが、サポートされるのは非常に限定的です。バイトコード命令はありません。」 Java 仮想マシンのブール値専用 Java 言語式で演算されるブール値は、コンパイル後に Java 仮想マシン内で int データ型に置き換えられ、ブール配列のバイト配列にエンコードされます。 Java 仮想マシンでは、各ブール要素は 8 ビットを占有します。」このようにして、ブール型は単独で使用される場合は 4 バイトを占め、配列では 1 バイトを占めると結論付けることができます。
明らかに 3 番目のステートメントのほうがより正確なステートメントですが、なぜ仮想マシンはブール値ではなく int を使用するのでしょうか? byte または short を使用しないのはなぜですか? より多くのメモリ領域を節約できるのではありませんか?多くの人は当然そう考えるでしょう。私もこの疑問を持ちました。情報を調べたところ、int を使用する理由は、現在の 32 ビット プロセッサ (CPU) では一度に処理されるデータが 32 ビットであることがわかりました (ここではありません) 32/64 ビット システムを指しますが、CPU ハードウェア レベルを指します)、効率的なアクセスの特徴があります。
最終要約:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html の公式ドキュメントの説明によると:
boolean : ブール データ型には、true と false の 2 つの値しかありません。このデータ型は、true/false 条件を追跡する単純なフラグに使用します。このデータ型は 1 ビットの情報を表しますが、その「サイズ」は何かではありませんこれは正確に定義されています。
ブール型: ブール型のデータ型には、true と false の 2 つの値しかありません。このデータ型は、true/false 条件を追跡する単純なマーカーに使用します。このデータ型はこのビットの情報を表しますが、その「サイズ」は正確に定義されていません。
ブール型は正確な定義を与えていないことがわかります。「Java 仮想マシン仕様」では、ブール配列の 4 バイトと 1 バイトの定義が与えられています。詳細は仮想マシンの実装に依存します. 仕様に従っているので、1バイトでも4バイトでも可能です。これは実際には、コンピューティング効率とストレージ容量の間の勝負であり、どちらも非常に重要です。
関連する無料学習の推奨事項: Java 基本チュートリアル
以上がJava ではブール型は何バイトを占めますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。