美文网首页
java经典问题:byte b=1、b=b+1、b+=1

java经典问题:byte b=1、b=b+1、b+=1

作者: 吃才_2b10 | 来源:发表于2019-01-10 18:03 被阅读0次

  第一个正确,第二个报错,第三个正确。根本原因就是 byte相计算的时候如果不进行强制转换,都会编译错误的。

        byte b=1,检查右边没有超过byte的范围(-128到127)。系统强转为1为byte型;     

        b=b+1,1默认为int类型,b自动转型为int与1做加法,结果是int类型的。把int类型赋给byte类型b.顺便说一下,如果b=b+1改为b+=1就没错了。

        b += 1,其实等价于 b = (byte)(b+1);底层会对这个结果进行强转的,所以它编译的时候没事,如果b是127, 那么加1后变成128了,成了int类型了,超过了byte类型的最大范围了,系统会强转,把int类型的 前面三个高位丢弃,丢弃后,如果剩下的一位中,最高位为1,则取反加一,就成了负数了,如果最高位为0,直接把值赋给b 。

相关文章

  • java经典问题:byte b=1、b=b+1、b+=1

    第一个正确,第二个报错,第三个正确。根本原因就是 byte相计算的时候如果不进行强制转换,都会编译错误的。 b...

  • 多态

    强转 byte b=1; b=b+1; b=(byte)(b+1) 接口 a = new 实现类()...

  • ++ --

    ++在后 (a++):a>b (a+1) ++在前 (++a):a=b (a+1 b+1) --在后(a--):a...

  • 学习JS(一)

    1.表达式:(可以包含常数或变量)eg:a=b+1; a为变量,“=”为赋值,“b+1”为表达式。几种常用表达式...

  • java经典面试题集

    byte b = 3;b = 3 +7; byte b = 3;byte b1 = 3;byte b2 = 7;b...

  • 2018-12-04(变量问题)

    一 java中 针对两个变量相加 byte b1 = 3, b2 = 4, b: b = b1 +b2: 这样进行...

  • short s1 = 1; s1 = s1 + 1;有什么错?

    1. short b = 1; 2. short b = 1; ++b; 3. short b = 1; b+=1...

  • Mysql DBA-索引篇

    索引类型: 1.按照数据结构角度:B+树索引,哈希索引,FULLTEXT索引 1)B+树索引: B+的特性:1.所...

  • B树、B+树、B*树

    1)什么是B树、B+树、B树?2)B树、B+树、B树的作用?3)B树、B+树、B*树的应用场景? 一、什么是B树、...

  • Java基本数据类型之间赋值与运算归纳

    前言:面对“byte b1=3;byteb2=7;byte b=b1+b2;”报错,而“int i1=3;int ...

网友评论

      本文标题:java经典问题:byte b=1、b=b+1、b+=1

      本文链接:https://www.haomeiwen.com/subject/edzarqtx.html