java中-0和0如何在内存中放置的,如若比较的话又是如何取出处理,得出true,
if(-0==0){},如若使用Integer num=new Integer(0); Integer num1=new Integer(-0);
if(num1==num){}false难到num1和num取得的值不是0和-0吗

解决方案 »

  1.   

    0的补码是 0000 0000
    那么-0的补码,为正0的二进制取反加1:1111 1111 + 1 = 0000 0000 
    int使用的是8位的数,加1后有一个进位(第9位),已经溢出了,结果只取了后面8个0.
    这里得到负0的补码和正0的补码一样都是8个0,与 0 == -0 一致但是:Integer对象比较大小不能用==;==号比较的是俩个对象,这里的两个对象志向不同的引用,当然不相等。 Integer比较大小应该用该类提供的函数compareTo()函数,或者先将Integer对象变为int类型数字再作比较。
      

  2.   

    咱不提new问题,就基本类型来说
      

  3.   

                    int a=-0;
    int b=0;
                    System.out.println(a);
    System.out.println(b);
    if(a==b){
    System.out.println("ok");
    }
                    double x=0.0;
    double y=-0.0;
    System.out.println(x);
    System.out.println(y);
    if(x==y){
    System.out.println("ok3");
    }
    result:
    0
    0
    ok2
    0.0
    -0.0
    ok3