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

每日一题(9)

作者头像
KEN DO EVERTHING
发布2019-01-17 15:25:43
3940
发布2019-01-17 15:25:43
举报
文章被收录于专栏:KEN DO EVERTHING

点击上方“java从心”,置顶公众号

每天进步一丢丢,连接梦与想

生活有多美好,取决于你对它有多热爱

上题回顾与解析

代码语言:javascript
复制
public class Question8 {
    public static final int MAX = Integer.MAX_VALUE;
    public static final int START = MAX - 100;
    public static void main(String[] args) {
        int j = 0 ;
        for (int i = START; i <= MAX ; i++) {
            j++;
        }
        System.out.println(j);
    }
}

输出什么? 解析:

  • 你可能会很快的回答100 然后细心地看了下 说 101 其实答案都不是,程序进入死循环了 这是因为Integer.MAX_VALUE + 1 = Integer.MIN_VALUE 所以在for循环中 i=MAX 后 i++ ,这时的 i 变成Integer.MIN_VALUE 了,依然满足条件 只要将i <= MAX中的=号去掉,答案就是100了
  • Integer.MAX_VALUE + 1 为什么等于 Integer.MIN_VALUE ? Integer.MAX_VALUE的二进制是 01111111111111111111111111111111 Integer.MIN_VALUE的二进制是 10000000000000000000000000000000 而01111111111111111111111111111111 + 1 = 10000000 000000000000000000000000 即Integer.MAX_VALUE + 1 = Integer.MIN_VALUE

想不到吧,这个记住就好了

每日一题

代码语言:javascript
复制
public class Question9 {
    public static void main(String[] args) {
        int minutes = 0 ;
        for (int ms = 0; ms < 60 * 60 * 1000; ms++) {
            if(ms % 60*1000 == 0) {
                minutes ++ ;
            }
        }
        System.out.println(minutes);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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