今天一个同事说他遇到了意见很有趣的代码,说JVM出现问题了,代码如下:
public class Test { public static void main(String[] args) { int i=40; int j=040; System.out.println(i==j); } }
打印结果是false
猛一看 是挺奇怪的 怎么可能出现这种情况,40和040肯定是相同的哇,于是我将i和j的值一并打印出来
代码如下:
public class Test { public static void main(String[] args) { int i=40; int j=040; System.out.println(i==j); System.out.println(i); System.out.println(j); } }
运行结果如下
false
40
32
于是乎 恍然大悟 原来是JVM里面已0开头的是八进制的数据,两个值当然不同了,看来细节还是灰常重要的,另外我们写程序也真的需要注意规范,不要瞎胡加一些东西,有时候会出现一些奇怪的问题!
不过也蛮好,下次也会多注意点,呵呵!