黑马程序员技术交流社区

标题: 高手在哪?求解答! [打印本页]

作者: 肥猫    时间: 2013-7-1 00:44
标题: 高手在哪?求解答!
本帖最后由 肥猫 于 2013-7-3 21:55 编辑

RT

  1. <P> </P>
  2. <DIV class=blockcode>
  3. <BLOCKQUOTE>public class Question {

  4. public static void main(String[] args) {

  5. long sum = 0L;
  6. for (int i = 0; i < Integer.MAX_VALUE; i++) {
  7. sum += i;
  8. }
  9. System.out.println(sum); // 结果为2305842980222664795

  10. Long sum2 = 0L;
  11. for (int i = 0; i < Integer.MAX_VALUE; i++) {
  12. sum2 += i;
  13. }
  14. System.out.println(sum2); // 结果为2305843005992468481
  15. }
  16. }
复制代码
在EditPlus上运行是如上结果,IDE上则两个都是SUM2,求解为何?SUM数值如何来?

作者: 段旭东    时间: 2013-7-1 11:34
解答开始:
我复制了你的代码 经行了验证
发现:
  1. public class d {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 long sum = 0L;
  8.                 for (int i = 0; i < Integer.MAX_VALUE; i++) {
  9.                 sum += i;
  10.                 }
  11.                 System.out.println(Integer.MAX_VALUE);
  12.                 System.out.println(sum); // 结果为2305842980222664795

  13. //                Long sum2 = 0L;
  14. //                for (int i = 0; i < Integer.MAX_VALUE; i++) {
  15. //                sum2 += i;
  16. //                }
  17. //                System.out.println(sum2); // 结果为2305843005992468481
  18.                 }
  19.         }
复制代码
我将sum2注释掉了 只让sum运行
得到的结果 为2305843005992468481
并没有获得LZ的自己计算的sum的值
所以我又输出了LZ的 判断条件
i < Integer.MAX_VALUE
输出的 nteger.MAX_VALUE值 为2147483647
如此长的位数 控制台输出都有点延迟
sum2的 初始值 以及判断条件 跟sum完全相同
所以 sum2的值也为2305843005992468481
总结:sum的值 不是消失了!因为 运行sum,和sum2时 控制台输出的了 两种结果
证明sum 和sum2同时运行了!
由于判断条件和初始值相同,所以可以认定为 输出结果为 2305843005992468481是正确
sum和 sum2的值都为2305843005992468481
作者: 神之梦    时间: 2013-7-3 21:49
楼主就是大神,试问解决了没???
我这重现不了问题
作者: 肥猫    时间: 2013-7-3 21:57
神之梦 发表于 2013-7-3 21:49
楼主就是大神,试问解决了没???
我这重现不了问题

靠啊,别这样,你这样说我会脸红,真的.
作者: 神之梦    时间: 2013-7-3 22:05
肥猫 发表于 2013-7-3 21:57
靠啊,别这样,你这样说我会脸红,真的.

脸红啥呀,真心崇拜啊。。。。。。
论坛里别人也在问相类似的问题,所以想问下猫大神,找到原因了没
作者: 孙四有    时间: 2013-7-7 00:52
int数据加法运算
作者: 于世德    时间: 2013-7-8 15:39
你们在说些什么,我怎么完全听不懂????




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2