今天看了一道面试题:java会存在内存泄漏吗?请简单描述。
答案是:会.int i1,i2; 将i1-i2 如果i1是足够大的正数,i2是足够大的负数,就会造成溢位。导致错误。
我手痒的去测试了一下。
程序如下:
int i1=Integer.MAX_VALUE;
int i2=Integer.MIN_VALUE;
System.out.println(i1+"\t"+i2);
System.out.println(i1-i2);
int i3 = i1-i2;
System.out.println(i3);
打印结果:
2147483647 -2147483648
-1
-1
我试着将i2-1 得到的值是2147483647 。
出于上面的测试我有以下疑问:
1. 网上的答案是不是有问题或者我的案例写得有问题
2. 据我所知内存溢出是因为jvm已经没有空间再装对象了才会出现内存溢出,两个值的运算为什么会造成内存溢出
3. -2147483648-1 为什么会得到2147483647