char c = 000000000001;为什么可以编译呢?望解答,谢谢。

解决方案 »

  1.   

    char本质上就是一段内存。
    你那句话等价的是这句:char c = '!'; 编译器把'!'对应的ASCII码(000000000001)找到然后把c对应的内存处赋值为000000000001。
      

  2.   

    首先谢谢大家的回答。
    我是不是可以理解为只要符合char的长度(2个字节、18bit)的数据都可以存储在char中?
    byte、float、int亦然?
      

  3.   

    你这里的000000000001并不是你所想象的二进制形式!
    java里没有二进制的字面量表示法,如果你确实需要赋值一个二进制字面量的话可以通过8进制或16进制来辅助
    另外,一切数据在内存都是bits,具体是什么类型取决于程序怎么看待这块内存
      

  4.   

    正解!只要不超过int范围,前面的0其实是可以忽略掉的。