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