The byte code ranges from 0 to 256 (and -1 which indicates the EOF), but the java byte variable ranges from -128 to 128. How is that method able to store the bytes from the code into byte variables?
I'm not sure what you're unclear about:
is.read(byte[])
reads an array of 8-bit values. The fact that those values are signed (-128..127, not "128")) is irrelevant..length
is the buffer size and/or the #/bytes successfully read before EOF.