Java问题 - 背后的原因和可能的输出是什么

时间:2011-02-18 08:29:08

标签: java

1。)

long milli=24*60*60*1000;
long micro=24*60*60*1000*1000;
long result=micro/milli;

结果应为1000但不是。

请告诉我输出并解释一下吗?

2)

int i=0;
for(a=0;a<=integer.MAX_VAL;a++)
{
    i++;
}

S.O.P(i);

通常它会进入infine循环,因为它有最大值它应该从循环中出来。在什么条件下它将成功执行,什么将是例外价值。 .....任何人都可以告诉我关于VM ...在JAVA中处理数字

3 个答案:

答案 0 :(得分:5)

你需要在其中加L进行长时间转换

long micro=24*60*60*1000*1000L

答案 1 :(得分:2)

2)

public class test {
    public static void main(String[] ar){
        int i=0;
        for(int a=0; a< Integer.MAX_VALUE;a++) {
            i++;
        }
        System.out.println(i);
    }
}

输出:

<强> 2147483647

答案 2 :(得分:1)

这感觉很危险,不得不猜测问题和答案。 ;)

我认为第二个问题应该是

int i=0;
for(a=0;a<=Integer.MAX_VALUE;a++)
    i++

这将进入无限循环,因为a的所有可能值都是&lt; = MAX_VALUE。

您可以将此循环重写为

int a=0;
do {
    i++
} while (a++ != Integer.MAX_VALUE);

i将溢出时为Integer.MIN_VALUE。