将值显式乘以long

thr*_*ack 0 java math

我知道所有数学都是作为处理当前值所需的最大数据类型完成的,但当你横向循环时,如何明确地乘以long?我怀疑,由于溢出,下面的代码返回0.

long result = 0L;
List<Long> temp = (List<Long>) getListOfIntegers();
for (int i = 0; i < temp.size(); i++) {
   result *= temp.get(i).longValue();
}
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 9

将第一行更改为以下内容将有助于:

long result = 1L;
Run Code Online (Sandbox Code Playgroud)

乘以0会给你0 :)


Whi*_*ind 6

结果为零,因为它从零开始,并将零乘以任何结果为零.