A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaocai 初级黑马   /  2012-4-8 17:19  /  2033 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Virus {
                static int virusCount = 0;
               
                public Virus() {
                                virusCount++;
                }
                static int getVirusCount() {
                                return virusCount;
                }
}


public class VirusLook {
                public static void main(String[] args) {
                                int numViruses = Integer.parseInt(args[0]);
                                if (numViruses > 0) {
                                                Virus[] virii = new Virus[numViruses];
                                                for (int i = 0; i < numViruses; i++) {
                                                                virii[i] = new Virus();
                                                }
                                                System.out.println("There are " + Virus.getVirusCount()
                                                                                                                                        + " viruses.");
                                }
                }
}
为什么输入200能运行,2000000000000就不能运行

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

4 个回复

倒序浏览
超过int值的最大值了 大于 2的31次方减1 就不行了
回复 使用道具 举报
一个int是四个字节。。每个字节八位。。总的也就是32位。。计算机是只有二进制的数。。0-1.。也等于2的32次方。。其中一半是负数。。所以是2的三十一次方。。在减去一个0也算在正数内。。所以int的最大值为2的31次方减一。。最大值为负的2的三十一次方。。

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
1、你定义的是int类型,int类型在内存中占用4个byte,32bit,通俗说就是32位二进制
2、20000000000000换算成二进制是:
    100100011000010011100111001010100000000000000
      仅数据就需要32位二进制表示了,但数据在内存里还需要一位表示符号,所以int类型就表示不了了。
3、你可以把int virusCount 改为long virusCount应该就可以运行了。

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
孙悟空对铁扇公主说道:好嫂子,我的牛魔王大哥在家吗?铁扇公主不悦道:孙猴子!你大晚上来找我,你大哥在家的话,我敢给你开门吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马