Integer in=new Integer(11111111111);//出错 out of range
为什么以下代码没有发生这种错误呢?
Long lo=      new Long(11111111111)
int i=lo.intValue();

解决方案 »

  1.   

    Integer的最大值是2的31次方-1,你构造的数超过的Integer所能接受的最大值当然出错。Long lo= new Long(11111111111)
    int i=lo.intValue();long型可以向int转换,但是自然就会损失精度了,所以没什么错误,但是int i估计没有办法准确表示long lo的值了。PS:快下班了,没时间试了,楼主可以自己试试。再仔细查查API,我是凭的记忆,也可能说的不太准
      

  2.   

    int i=lo.intValue();
    得到的 变量i肯定不是11111111111
      

  3.   

    Integer 类型的最大值小于11111111111
      

  4.   

    我来作一个终结:
    int的可以取到的最大值为2的31次方减1,即为2147483647,为21亿4千万多,你的数值超过了111亿,明显超出范围。因此编译器给你的提示是合情合理的。同时我告诉你一点:你采用
    Long lo=      new Long(11111111111);
    int i=lo.intValue();
    的方式也是不对的,你不加修饰的直接使用11111111111,编译器也会视为整形处理
    正确的方式是Long lo=      new Long(11111111111L);
    int i=lo.intValue();