fengzhizi12 2023-07-06 12:27 采纳率: 100%
浏览 25
已结题

Java强制类型转换为什么会失败?

System.out.println((long)(46341*46341));
System.out.println((long)46341*46341);

如题,第二个能转换成功,第一个就会失败

  • 写回答

2条回答 默认 最新

  • 草履虫· 2023-07-06 12:51
    关注

    System.out.println((long)(46341*46341)) => 并不是类型转换失败,这里先进行两个int类型的乘法,结果超过了int类型的取值范围,得到一个错误的值,再进行转换得到的值自然也是错的;

    System.out.println((long)46341*46341) => 这个先进行了转换,再进行乘法时后面的int类型也自动转成long,结果不会溢出,所以转换成功了;

    第一个式子把值改小点,结果在int范围内就能成功了;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月14日
  • 已采纳回答 7月6日
  • 创建了问题 7月6日