Javaの千Q:DOは、あなたは、Java言語ブールデータは最後どのくらいのスペースに計上知っていますか?

我々はすべて知っているように、Java言語はboolean型を持っています。ブール変数のそれぞれは、真または偽の論理値に格納されます。そして、あなたは多くのスペースを必要とし、論理値を格納?教科書は、また、メモリ内のデータのブール型は1ビットだけが言ったときに理論的には、この論理値は、この問題について話をたくさんすることができビット(ビット)が必要保存されます。

バイトの最小単位である場合には、コンピュータのアドレッシング操作完了されていますが、少し常識は、コンピュータのことを知っています。メモリから毎回、1バイトの正確な最小限のデータを読み取ることである。つまり、あなたは、単一ビットの情報を読み取ることができません。ブール変数の値がある場合にのみ、1ビット、各時間バイト1のコンピュータは、8つの値のブール変数が含まれている情報を、読み取ります。コンピュータは、我々はいくつかのアルゴリズムで探している値である、これは8つの値を決定する必要があります。この「8対1、」操作は運用負荷を増加させるために行うので、これは、明らかに非常に無理があります。そして、最終的には、Java仮想マシンは、ブール値を格納する方法ですか?

完全にこの問題をクリアするために、我々はあなたが飛行機を滑走伝える必要があります。たびにJDKの新しいバージョンでは、Javaはに公式バージョンの対応をリリースする予定の「仮想マシン仕様。」「仮想マシン仕様」では、ストレージのboolean型の特殊な解釈があり、紙は述べ:.「ブールデータ型のこの定義は、それは非常に限ら提供していますがサポートは、任意のJava仮想マシンではありませんバイトコード命令のためのプライベートブール値、Java言語の操作中にブール式は、Java仮想マシンのバイト配列にエンコードされる代わりに、コンパイルし、ブール配列の後に、Java仮想マシンのintデータ型を使用します、(したがって)ブール要素ごとに8を占めました。 "

、データの使用のみを入力した場合はブール空間の4バイト、および保存されたブール配列場合、各要素は1バイトのみを持っています。この引数によると、我々はそれを見ることができます。
その後、再び質問:単独のデータのブール型は、いつ、なぜ使用4は、それを格納するバイト?ストレージの1バイトまたは2バイトで、それはより多くのスペースを節約しているのですか?我々は、現在の32ビットプロセッサのほとんどは、(32ビットオペレーティングシステムではないが、CPUハードウェアに)知っている必要があり、4バイト(32ビット)アクセスが最高の効率であるように、ブールデータタイプが格納されています。

最後に、そこにはジュニアパートナーが求められます。「仮想マシン仕様」がそう指定されていますが、仮想マシンの実現に、本当にこのようなルールで実行することが?この問題を明確にするために、我々は科学に少し常識を持っている:世界には、OracleのJava仮想マシン(JVM)を達成する唯一の会社ではない、他の企業や団体が独自のJava仮想マシンの実装を公開もあります。ブールデータ型を格納するための「規範」の規定に完全に従ったかどうかを独自の仮想マシンでこれらの企業や政府機関は、知られていません。彼らは、業務の効率化とストレージ容量の両方のパフォーマンスを検討します。

あなたは、Javaプログラミングシステムを勉強したい場合は、クリックすることができますhttps://edu.51cto.com/lecturer/2256836.htmlこのサイトに私のビデオレッスンを見て、あなたはまた、291839907を議論するために私のQQグループを追加することができます問題があります!

おすすめ

転載: blog.51cto.com/2266836/2464732