文字コードまわりのJavaの検証コードを書いていると、byte型を多く使う。明示的にbyte型へのキャストも行う。
「うっかり、整数算術、関係演算子による大小比較を行わないようにせねば」と思った。
int ff = 0xff; // ff は、255 byte oops = (byte) 0xff; // oops は、-1
0xffは、整数リテラル。byte型は、8ビット符号付き整数で、2の補数表現。プリミティブ型はシンプルなの。
と言い聞かせる。
2010/05/23追記
図の内容が誤っていた(10進数の2を、2進数で11としていた)ので、図をさしかえた。
ちなみに、byte型の変数名をoopsとしているが、この行自体が誤っているわけではない。ただ「大小比較とかすると-1だから、間違えないように」ということ。