前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每日一题(12)

每日一题(12)

作者头像
KEN DO EVERTHING
发布2019-01-17 15:47:45
2620
发布2019-01-17 15:47:45
举报
文章被收录于专栏:KEN DO EVERTHINGKEN DO EVERTHING

它不怀念过去,也不向往未来

它只是现在

上题回顾

代码语言:javascript
复制
public static void main(String[] args) {
        final long lg1 = 24 * 60 * 60 * 1000 * 1000;
        final long lg2 = 24 * 60 * 60 * 1000;
        System.out.println(lg1/lg2);
    }

看似程序打印的必是1000,但打印的是5。到底发生了什么?

解析: 计算中发生了数据溢出。Long类型很容易装得下这结果,溢出发生在int数据计算过程中

lg1 = 24 * 60 * 60 * 1000 * 1000 右边的结果是int类型的,其结果int放不下,所以发生了数据溢出

只要修改一下,改为如下代码即可:

代码语言:javascript
复制
public static void main(String[] args) {
        final long lg1 = 24L * 60 * 60 * 1000 * 1000;
        final long lg2 = 24L * 60 * 60 * 1000;
        System.out.println(lg1/lg2);
    }

右侧运算含有一个Long类型数据,则其结果则为Long类型,Long可以装下其结果,保证了结果的正确性

这个教训告诉我们:当你在操作很大的数时,千万要提防溢出

每日一题

代码语言:javascript
复制
public static void main(String[] args) {
        char x= 'x';
        int i = 0;
        System.out.print(true ? x : 0);
        System.out.print(false ? i : x);
    }

THANDKS

- End -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java从心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档