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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

由于是基础班,内容相对较浅,自身作为小白从零开始,并没有什么高深的学习经验同大家分享.
以下为刚接触编程时.遇到问题,并经过查阅得知的一点算是小知识吧,或许有人跟我一样不知道呢.大佬请默默的略过.看看就好.
我们都知道 数据类型有各自的长度.
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

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马