对int(11)的误解,并不能存999亿条数据

23 篇文章 0 订阅

       闲来无事,突发奇想往Mysql表的主键id int(11)插入11个9,结果竟然插不进去。很是诧异,通过不断二分法,一步一步测试终于在id为2147483647的时候插进去了,再加1就不行了。所以Mysql的整型int最大也就20多亿,并没有想象的999亿。

       既然数据只有20多亿,Java类型呢?通过代码插入比这个数大的数据不是出错了,我赶紧去试了一下,诶哟!出乎所料,也是2147483647,我一直以为都是11个9。

System.out.println(Integer.MAX_VALUE);

       查看了一下源码:

/**
     * A constant holding the minimum value an {@code int} can
     * have, -2<sup>31</sup>.
     */
    @Native public static final int   MIN_VALUE = 0x80000000;

    /**
     * A constant holding the maximum value an {@code int} can
     * have, 2<sup>31</sup>-1.
     */
    @Native public static final int   MAX_VALUE = 0x7fffffff;

    也许很多人看多这段源码,也没有算过等于多少吧。

其实主要原因就是int存四个字节,4×8=32,2^32-1=2147483647。好基础啊。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值