如果让你计算 1 到 100 万的和是多少,你应该会这样写:
@Test
public void testSum() {
int sum = 0;
for (int i = 1; i <= 1000000; i++) {
sum = sum + i;
}
logger.debug("SUM - {}", sum);
}
程序不长,但是你如果进行计算的话,你得到的结果很有可能是这样的:
00:38:51.312 [main] DEBUG com.ossez.codebank.algorithm.tests.BlankTest - SUM - 1784293664
是不是发现上面的结果不对?
这是因为在 int 已经溢出了。
在 Java 中,int 只能存储 2147483647 这么多的数字,如果你在上面的代码中使用 int 那么肯定会溢出的。
所以你需要使用 long 来进行计算。
上面的运算结果才是你要的结果。