Hi James,
private final int i = 127;
byte k = i ;
This will compile . The reason being that 127 fit's as a byte & the fact that i is final which means it won't change throughout it's lifetime .
Now try
private final int i = 128;
byte k = i ;
This won't compile cause i doesn't fit the byte range .
Ashish