当对两个数值进行二元操作时,先要将两个操作数转换为同一种类型,然后再进行计算。
- 如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型。
- 否则,如果其中一个操作数是float类型,另一个操作数就会转换为float类型。
- 否则,如果其中一个操作数是long类型,另一个操作数就会转换为long类型。
- 否则,两个操作数都将转换为int类型。
对于最后一点,即使操作数是short等类型也会转换为int类型进行计算。
如:
short b = 1; b = b + 1; // 错误 b = (byte) (b + 1); // 正确
不过对于short类型进行‘++’运算与‘+=’,则不会进行转换:
short b = 1; b++; // 正确 b += 1; // 正确