public class Three { public static void main(String[] args) { Three obj = new Three(); obj.function(600851475143); } private Long function(long i) { Stack<Long> stack = new Stack<Long>(); for (long j = 2; j <= i; j++) { if (i % j == 0) { stack.push(j); } } return stack.pop(); } }
当上面的代码运行时,它会在line上产生错误obj.function(600851475143);。为什么?
obj.function(600851475143)
600851475143不能表示为32位整数(类型int)。可以将其表示为64位整数(类型long)。Java中的长文字以“ L”结尾:600851475143L
600851475143
int
long
600851475143L