社区
Java
帖子详情
byte i = 127; i += 1;
大涵涵
2017-07-28 09:00:57
执行下列语句后,变量i的值是:
byte i = 127;
i += 1;
A. 128
B. 0
C. 1
D. -128
答案是什么,能给讲解一下吗?
...全文
747
2
打赏
收藏
byte i = 127; i += 1;
执行下列语句后,变量i的值是: byte i = 127; i += 1; A. 128 B. 0 C. 1 D. -128 答案是什么,能给讲解一下吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
JOKER叔叔
2017-07-28
打赏
举报
回复
低八位,一半正一半负,0000 0000>0111 1111是0>127,+1超出正数范围1000 0000 >1111 1111是-128>-1,-1+1超出低八位,进位变成0000 0000
千杯不醉476
2017-07-28
打赏
举报
回复
-128
转自:
http://bbs.csdn.net/topics/390389645
java中byte类型作计算,都会先转换成int类型再计算。
比如
byte b = 127 + 1;//这样写报错:Type mismatch: cannot convert from int to byte
所以必须强制类型转换:
byte b = (byte) (127 + 1);
因此就能理解为什么是-128了:
int型的127在计算机内的二进制是:
0000 0000 0000 0000 0000 0000 0111 1111
加1后变成:
0000 0000 0000 0000 0000 0000 1000 0000
即128
强制转换后截取低8位变成
1000 0000
这是byte类型-128的补码。
Java中的i=i+1和i+=1以及i++和++i详解
一、i=i+1和i+=1 (1)概念 i=i+1使用简单赋值运算,i+=1使用复合赋值运算。 简单赋值运算和复合赋值运算的最大差别就在于: 复合赋值运算符会自动地将运算结果转型为其左操作数的类型(即将不管i是什么数据类型,都会将右边int的1转换为i的类型)。 (2)实例 //方式一:
byte
i=7; i+=1; //方式二:
byte
i=7; i=i+1; 第一种写法编译没问题,而第二种写法却编译通不过。原因就在于,当使用复合赋值运算符进行操作时,即使右边算出的结果是int类型,系统也会将其值
Java中,i += 1、i = i + 1和i++有何区别?
如需转载,请标明转载来源,总结和码字都不易啊! Java中,i += 1、i = i + 1和i++有何区别? 今天在思考i += 1和i = i + 1的区别时,自己通过比较多种方式在编译期和字节码层面的差异,总结了本篇博客(纯原创!),本篇博客的所有实验都基于JDK8,不同版本的结果可能不同。当然本人水平有限(小白),可能有错误的地方,建议大家一起尝试一遍,看看大家的结果和结论是不是一样的,欢迎交流和指正,谢谢各位啦! Java中的整型类型默认为int,因此在对
byte
类型进行计算时,
byte
类型会自动
关于
byte
a=1;
byte
b=2;
byte
c=a+b;报错,而
byte
d=1+2;却不报错,这个问题的原因和自己的一些理解
我们来看一下代码---->
byte
a=1;
byte
b=2;
byte
c=a+b;//编译不通过
byte
d=1+2;//编译通过 首先我们来看
byte
c=a+b;报错的原因 提示的是需要
byte
类型却找到的是int类型,明明是两个
byte
类型呀,为什么说找到的是int类型呢?说明虚拟机“认为”a+b是int类型 那么问题就来了,
byte
d=1+2;这里=右边的1+2不也是int类型吗为什么它却不报错呢? 我刚开始也一直想不通,后来发现这里...
【Java】i++、++i、i = i + 1 和 i += 1 的区别分析
目录第1部分 i++ 与 ++i 的区别第2部分 i++ (或者 ++i )与 i = i + 1 、 i += 1 的区别计算方式区别效率分析 第1部分 i++ 与 ++i 的区别 这两个的区别大部分人都知道,就简单提一下 i++ 是先进行赋值操作,后进行自增操作;而 ++i 是先进行自增操作,后进行赋值操作,举个栗子 int i = 1; int j; j = ++i; // 此时是先自...
i+=1和i=i+1的区别
可能有很多程序员认为i+=1只是i=i+1的简写方式,其实不然,它们一个使用简单赋值运算,一个使用复合赋值运算,而简单赋值运算和复合赋值运算的最大差别就在于:复合赋值运算符会自动地将运算结果转型为其左操作数的类型。看看以下的两种写法,你就知道它们的差别在哪儿了: (1)
byte
i=5; i+=1; (2)
byte
i=5; i=i+1; 第一种写法编译没问题,而
Java
50,523
社区成员
85,601
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章