You have to get the value as an integer and then mask off the low order 8 bits, to make it into an unsigned value, like this:
public static void main(String\[\] args) throws Exception {
byte b1 = (byte)129; // b1 is the original unsigned value, which takes the full 8 bits
byte b2 = 4; // b2 is a normal value
int i1 = b1; // make b1 an integer
int i2 = i1 & 0xFF; // mask off all but the low order 8 bits, i.e. the original byte value
int i3 = i2 + b2; // add the two original values together
System.out.println("i1 is: " + i1); // the negative byte value, same as b1
System.out.println("i2 is: " + i2); // the unsigned value
System.out.println("i3 is: " + i3); // the sum of the two numbers
}
[edit]Fixed typo; I meant low order 8 bits.[/edit]
Veni, vidi, abiit domum