とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

Javaのbooleanは1bit?1byte?

ikeがICPCの記事を書いていたので見たらintの3次元配列とかやってた。
http://d.hatena.ne.jp/no_known/20090524


ちなみに問題はこんなの
http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/problem.jsp?vol=JDWU2009I&id=B&tle=1&mle=32768&title=Cubes%20Without%20Holes&doc=1&contestID=JDWU2009I&lang=jp


int型は4byteだから
500^3 * 4 = 500MB
問題は300MBぐらいしか使えないみたいなのでアウト。


そもそも穴の開いてるかあいていないかなんだからbooleanで十分。
そこでふと疑問がわく。
Javaのbooleanは1bitか1byteか?


普通に考えれば1bitなんだが、どこかで1byteと見た覚えもある。
気になって調べるとWikipediaでは

Javaでは、ブーリアン型は boolean 型で表され、一般に1バイトで実装される(実装はJava仮想マシンに依存する)。booleanへの、あるいはbooleanからの型変換は許されない。

http://ja.wikipedia.org/wiki/ブーリアン型#Java


Twitterでも聞いてみたけどJavaVMの実装依存らしい。
というわけで、最悪の場合を考えて1byteでやっておく。
それでも500^3で125MBぐらいだし問題なくいけそうだからどっちでもいいか(ぉ


PS:
場合によっては数値にキャストできることからboolean型は4byteかも知れないらしい。
それならとりあえずbyte使えば1byteで済むしそれでいいか・・・