黑马程序员技术交流社区

标题: 关于数据类型强制转换时,数据溢出的规则 [打印本页]

作者: Mmmmo    时间: 2018-11-15 08:56
标题: 关于数据类型强制转换时,数据溢出的规则
由于是基础班,内容相对较浅,自身作为小白从零开始,并没有什么高深的学习经验同大家分享.
以下为刚接触编程时.遇到问题,并经过查阅得知的一点算是小知识吧,或许有人跟我一样不知道呢.大佬请默默的略过.看看就好.
我们都知道 数据类型有各自的长度.
public class Demo1 {
    public static void main(String[] args) {
        byte a = (byte) 129;
        System.out.println(a);//-127
    }
以上例子很简单,[129]做为常量为int类型,在强制转换为byte时是超过byte-128-127的数据范围的.
此时便造成了数据溢出.我们打印可得知结果为-127. 那么为什么是这个-127呢.是否遵循什么规律呢
这里byte的范围时-128-127.我们理解byte为一个数组 {-128,-127,-126.....126,127}
而我们在强制转换时如果如果超过了他的范围 则在进行一圈循环,既(-128到127)都未能找到这个数则进行下一圈的循环.
在上述例子中我们强制给的值为129,由此可见在127后 byte超范围了.于是便从-128开始,第2个数.既-127
同理 -129的话 循环倒过来 得到数字127

小小的知识点,并派不上用场,




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