この質問は、 long を int に正しくキャストする方法についてではなく、 intに誤ってキャストするとどうなるかということです。
したがって、このコードを検討してください-
@Test
public void longTest()
{
long longNumber = Long.MAX_VALUE;
int intNumber = (int)longNumber; // potentially unsafe cast.
System.out.println("longNumber = "+longNumber);
System.out.println("intNumber = "+intNumber);
}
これにより、出力が得られます-
longNumber = 9223372036854775807
intNumber = -1
ここで、次の変更を加えたとします-
long longNumber = Long.MAX_VALUE - 50;
次に、出力を取得します-
longNumber = 9223372036854775757
intNumber = -51
問題は、long の値がどのように int に変換されるのかということです。