黑马程序员技术交流社区

标题: 求解。。。 [打印本页]

作者: xiaocai    时间: 2012-4-8 17:19
标题: 求解。。。
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就不能运行
作者: 高铭    时间: 2012-4-8 17:50
超过int值的最大值了 大于 2的31次方减1 就不行了
作者: 郑苑东    时间: 2012-4-8 18:33
一个int是四个字节。。每个字节八位。。总的也就是32位。。计算机是只有二进制的数。。0-1.。也等于2的32次方。。其中一半是负数。。所以是2的三十一次方。。在减去一个0也算在正数内。。所以int的最大值为2的31次方减一。。最大值为负的2的三十一次方。。
作者: 王永旺    时间: 2012-4-8 18:42
1、你定义的是int类型,int类型在内存中占用4个byte,32bit,通俗说就是32位二进制
2、20000000000000换算成二进制是:
    100100011000010011100111001010100000000000000
      仅数据就需要32位二进制表示了,但数据在内存里还需要一位表示符号,所以int类型就表示不了了。
3、你可以把int virusCount 改为long virusCount应该就可以运行了。

作者: pray    时间: 2014-4-26 06:05
孙悟空对铁扇公主说道:好嫂子,我的牛魔王大哥在家吗?铁扇公主不悦道:孙猴子!你大晚上来找我,你大哥在家的话,我敢给你开门吗?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2