class wo
{
     byte a=-7,c=~a;
     void wohanyi()
     {
          System.out.println(c);
     }
     public static void main(String[] args)
     {
          
          wo woo=new wo();
          woo.wohanyi();    
     }
}初学JAVA,字节类型的是-128到127,这个程序编译时候怎么能说可能损失精度呢?没有超出这个范围啊?

解决方案 »

  1.   

    class Wo 

         byte a=-7,c=(byte) ~a; 
         void wohanyi() 
         { 
              System.out.println(c); 
         } 
         public static void main(String[] args) 
         { 
               
              Wo woo=new Wo(); 
              woo.wohanyi();     
         } 
    } //计算的结果我想是这样的哦:
       a=-7       是7的按位取反加1   得是 1111 1001 
       然后在 ~a (反就是 0 变1,1变0 ) 得 0000 0110 结果是6
    我想可能是在进行 换算的时候,他就应该 是被转成了int 类型,所以要用 byte 转码一下!
      

  2.   

    支持4楼的
    char byte short 是不能直接比较大小的它们必须转换成int型才能比较。。
      

  3.   

    原因找到了,byte类型先被提升为int类型后再实行右移运算。