提升 指将范围较窄的类型转化为范围更宽的类型。
Java中所有数值类型(byte, short, int, long)都是有符号类型,遵循符号扩展的原则,即使用最高bit填充提升后的bit,这样可以保证提升后值不变。
1 byte b = -0x5c; 2 short s = b; // -0x5c 3 int i = b; // -0x5c
但是byte往往用来表示字节,此时它的值应当是无符号的,如果提升时保持无符号的特性,就不能进行类型转化,而要用位操作。
byte b = -0x5c; // 0xa4 int i = b & 0x0ff; // 0xa4