A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 暴风 中级黑马   /  2014-9-26 00:27  /  1063 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.System.out.println(3 / 0);   异常
2.System.out.println(3.0 / 0);  Infinity
3.System.out.println(3 % 0);    异常
4.System.out.println(3 % 0.0);  NAN
5.System.out.println(3.0 % 0);  NaN


谁能解释一下为何输出结果是这样?

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
这个涉及到一些底层知识,其实没必要太关注。我简单说说吧:
整数除法如果除数为0,cpu会发出一个异常信号,当然这不必然导致JVM也抛出一个异常。怎么处理cpu发出的异常,是操作系统和JVM的事,只不过JVM恰好选择了抛出异常而已。

浮点除法的除数为0,就涉及到浮点数表示的问题。Java的浮点数表示采用IEEE754标准,按这个标准表示的浮点数包含3个特殊情况:正、负无穷大和NaN(not a number) 所以你会看到Infinity和NaN

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 赞一个!

查看全部评分

回复 使用道具 举报
fantacyleo 发表于 2014-9-26 01:25
这个涉及到一些底层知识,其实没必要太关注。我简单说说吧:
整数除法如果除数为0,cpu会发出一个异常信号 ...

嗯!多谢了大虾!
回复 使用道具 举报
fantacyleo 发表于 2014-9-26 01:25
这个涉及到一些底层知识,其实没必要太关注。我简单说说吧:
整数除法如果除数为0,cpu会发出一个异常信号 ...

领教了,威武
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马