・Javaはunsignedがない
・負の値表すとき最大桁のビットが1になる
・文字を表すバイトは最大桁のビットが1になる場合があるが、別に負の値を表しているわけではない
・byteをintにキャストするときbyte最大桁のビットが1になっていると負の値だと思って、キャスト後のビットを勝手に1にしてくれちゃう

だから&0xFF