Compare byte values?
byte, comparison, java
Solution
boolean match = ((data[0] & 0xFF) == 0xFE);
compares integers as 0xFF is an integer, this expression will scale up your byte `data[0]` to an int and compare what's inside the parenthesis to a second int `0xFE(254)`. As you say `data[0]` is `(byte)0xFE`, it will first be scaled to the integer `0xFE` and compared to the integer `0xFE`, so this works.
boolean match = (data[0] == 0xFE);
compares a byte to the int `0xFE` : `254`
data[0] = (byte) 0xFE;
is a byte (so it's signed) and its value is `-2`.
`-2` is not equal to `254`, so that's why you must compare data[0] as a byte or as scale it up to an integer before comparing it the integer `0xFE`.
A simpler comparison could be
boolean match = (data[0] == (byte)0xFE);
Problem
I'm curious to know why, when I compare a `byte` array with a value... ``` boolean match = ((data[0] & 0xFF) == 0xFE); ``` ...returns `true`, while... ``` boolean match = (data[0] == 0xFE); ``` ...does not? `data` is a `byte` array with ``` data[0] = (byte) 0xFE; ```