int和long在循环中转换为数组

时间:2013-11-18 06:51:38

标签: java arrays size

我正在努力理解。当n从int范围传递到long int范围时会发生什么?为什么这不会给编译器带来冲突?我打算用它来创建一个大小为n的数组(我知道它会占用大量的内存并且它并不意味着最终值)我认为只能通过int索引并且不长,尽管到目前为止没有日食的错误。帮助理解会非常感谢。

for (int n= 10; n <= ((long)(500*Math.pow(10,6))); n=n*2)

2 个答案:

答案 0 :(得分:1)

for循环不会将n视为除int以外的任何内容,它会在

中操作n
n = n * 2

但是这里是一个int,所以你会得到溢出行为n永远不会超过最大int值。

在评估终止条件时,for循环需要一个布尔值

 n <= ((long)(500*Math.pow(10,6)))

这是一个int与long相比,所以n被转换为long只是为了评估比较这个想法为

 long tmp = n;
 if ( tmp <= bigLongValue)

n本身不受影响。

答案 1 :(得分:0)

甚至不需要int

试试这个     for(float t = 0; t&lt; = 2; t = t + 1){     的System.out.println(T);     }

因此,循环与值和类型无关

并创建一个无限循环

有(;;){ }

可以使用。