社区
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
答案是什么,能给讲解一下吗?
...全文
800
2
打赏
收藏
byte i = 127; i += 1;
执行下列语句后,变量i的值是: byte i = 127; i += 1; A. 128 B. 0 C. 1 D. -128 答案是什么,能给讲解一下吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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类型,系统也会将其值
i=i+1和i+=1以及i++和++i详解
原因就在于,当使用复合赋值运算符进行操作时,即使右边算出的结果是int类型,系统也会将其值转化为左边的
byte
类型,而使用简单赋值运算时没有这样的优待,系统会认为将i+1的值赋给i是将int类型赋给
byte
,所以要求强制转换。比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中**++i比i++效率要高些**。左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。i++是先传递结果后加,而++i刚好相反,是先加后传递结果。
java
byte
i=
127
_java中
byte
类型的
127
+1=-128?
题目如下:public static void main(String[] args) {
Byte
a =
127
;System.out.println(++a);System.out.println(++a);System.out.println(++a);}输出结果:-128-
127
-126恩,相信有些人是感觉有点懵逼的。我刚开始也是,后来想到了,首先
byte
的范围为-128~
127
。字节长度...
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
51,396
社区成员
85,839
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章