if(i!=0 && i==-i)
    {
       System.out.println(i);
    }
答案是int i=integer.Min_Value

解决方案 »

  1.   


    public class Test{
    public static void main(String[] args){
    int i = Integer.MIN_VALUE;
    System.out.println(Integer.toBinaryString(i));
    System.out.println(Integer.toBinaryString(-i));
    //负数的二进制表示是正数取反再加1.
    //所以成立
    }
    }
      

  2.   

    Integer.MIN_VALUE,即-2147483648,二进制位如下: 
    1000 0000 0000 0000 0000 0000 0000 0000 
    在计算机的运算中,“-”(前缀)运算表示各二制位取反再加1.
     1000 0000 0000 0000 0000 0000 0000 0000 Integer.MIN_VALUE 
    取反 0111 1111 1111 1111 1111 1111 1111 1111 (取反之后变成了Integer.MAX_VALUE) 
    加1 1000 0000 0000 0000 0000 0000 0000 0000 -Integer.MIN_VALUE(与原来的结果一样)