The result of the (1.0 / 0) division is: "Infinity". If we do the "type cast" operation on the above expression, to "byte" or to "short", then the result is -1. Why? And if we do cast it to "int" or to "long", then the result is their MAX_VALUE. OK, it has sense. But why is this difference? In other words: The result of (byte)(1.0 / 0) expression is why not equal to Byte.MAX_VALUE?