Java基础学习(2)——Java设计连续自然数相乘得到字符类型最值问题

Java基础学习(2)——Java设计连续自然数相乘得到字符类型最值问题

public class Example5 {
    public static void main(String args[]) {
        int x=1;
        for (int a = 1; a <= 11; a++) {
               x=x*a;
        }
        System.out.println("x的值是" + x);
    }
}

不难看出在这个例子当中,我们设计的是让从1开始,一直到10以内的自然数连续相乘,其输出结果是362800,这个数字已经非常大了,当我把限定条件改为20,程序直接输出错误的结果,于是不由得会想起来int类型的最值问题,int类型在内存中占4个字节,即32位,每一位存放一个数据,不考虑负数情况的话,它的最大值是2^32-1,而实际情况下我们必须要考虑到负数情况。
所以它的最大值就是2^32/2-1 即2^31-1是2147483647,平常可能很少会到这个值,但是在指数爆炸型运算时候,这个最大值就显得很无力了,需要好好规避这个小误区。遇到数值特别大的整数时,可以选择使用long长整型,它有64位,所以当一些数字特别大而又需要整个引用的话,它可以帮我们好好规避这个问题。
接下来时long数据类型的一个小运用,众所周知,光年是一个距离单位,用米来形容数据量是有点夸张的,所以我们用long类型来计算这一单位,来证明它强大的数值存储范围。


public class Example6 {
    public static void main(String args[]){
        long ls=299792458;
        long  s=60;
        long  m=60;
        long  h=24;
        long  d=365;
        long distance=ls*s*m*h*d;
        System.out.println("一光年的距离为"+distance+"米");
    }
}

运行可以得到我们程序的结果:
在这里插入图片描述

可以看出数值如此之大,在long数据类型中也可以计算出结果。
还有其他的整数类型像是short、byte,它们分别是2个和一个字节,同理即它们的运算值范围是:-2^15 -1 ~~ 2^15 -1;-2^7 -1~2^7-1;在这之后的编程,要多加小心。

感谢您的阅读

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值