社区
Java SE
帖子详情
java中+=运算符问题
望远镜Monkey
2012-10-29 09:17:56
public class test{
public static void main(String[] args){
byte a=5;
a=a+5;
byte b=5;
b+=5;
}
}
这段代码中,a=a+5因为表达式a+5是int类型,赋值给byte类型a而错误,下面的b+=5为什么不会报错呢,+=的运行机制究竟是怎么样的?求各位解惑!
...全文
298
8
打赏
收藏
java中+=运算符问题
public class test{ public static void main(String[] args){ byte a=5; a=a+5; byte b=5; b+=5; } } 这段代码中,a=a+5因为表达式a+5是int类型,赋值给byte类型a而错误,下面的b+=5为什么不会报错呢,+=的运行机制究竟是怎么样的?求各位解惑!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
望远镜Monkey
2012-10-30
打赏
举报
回复
结贴了,谢谢大家的热心解答,特别感谢andamajing、龙四,解释很清楚。
a8509190
2012-10-30
打赏
举报
回复
+=是会把后面的5自动强转的 而你a=a+5 因为a的类型比Int小 而他会自动转换成int所以在把Int赋值给Byte型会报错。
龙四
2012-10-30
打赏
举报
回复
http://www.ticmy.com/?p=285
qqid88147418
2012-10-30
打赏
举报
回复
这个问题很好 !
halfsuccess
2012-10-29
打赏
举报
回复
低级数据类型与高级数据类型运算的时候,低级数据类型首先转换为高级数据类型在进行运算,所以:
[Quote=引用 2 楼 的回复:]
这个问题在《Java Pullzers》书中有描述,问题在于java中,对于上述问题中复合运算符的运算,首先byte类型数据b转换为int类型,然后和int类型进行计算,计算的结果会自动通过强制类型转换转换为byte类型存储在b中,而对于简单运算符来说,并不会自动调用强制类型转换,所以编译会出错,解决的办法就是使用强制类型转换,如a=(byte)(a+5);
[/Quote]
zhaoming262350
2012-10-29
打赏
举报
回复
强制类型转换问题:
解释如下:
public class test10
{
public static void main(String[] args)
{
byte a=5;
a=(byte) (a+5); // 运算的a 是int型的,5是int型,因此需要强制类型转换,把int型转 // 换成byte型,输出的a是byte型的
System.out.println(a); // 把a强制转换成byte
byte b=5;
b+=5;
System.out.println(b);//直接输出的是byte的
}
}
DreamMakers
2012-10-29
打赏
举报
回复
这个问题在《Java Pullzers》书中有描述,问题在于java中,对于上述问题中复合运算符的运算,首先byte类型数据b转换为int类型,然后和int类型进行计算,计算的结果会自动通过强制类型转换转换为byte类型存储在b中,而对于简单运算符来说,并不会自动调用强制类型转换,所以编译会出错,解决的办法就是使用强制类型转换,如a=(byte)(a+5);
记得要记得
2012-10-29
打赏
举报
回复
因为+=有自动强制类型的功能,不会报错
赋值
运算符
+=,-=,*=,/=,%=
中
的细节
问题
博客围绕
Java
中
赋值
运算符
+=,-=,*=,/=,%= 的细节
问题
展开。以 int a = 10 为例,对变量 a 进行 + 2 操作有两种方式,指出 += -= *= /= %= 不会改变变量本身的数据类型。
Python
中
基本
运算符
&复合
运算符
&
运算符
优先级
博客介绍了Python的基本
运算符
和复合赋值
运算符
,指出Python与C和
JAVA
不同,不支持自增(++)和自减(--),如a+=1。此外,还提及了
运算符
的优先级
问题
。
x=x+i和x+=i的
问题
,恭候大牛莅临
本文详细解析了两个
Java
编程
问题
:第一个
问题
是编写一个合法的x+i表达式但x+=i不合法的程序;第二个
问题
是编写一个合法的x=i+x表达式但x+=i不合法的程序。通过这两个
问题
,深入理解
Java
运算符
的用法。
+=与=..+..的区别
本文详细探讨了
Java
中
+=
运算符
的工作原理,解释了它与简单赋值表达式的区别,特别是在处理不同类型(如short和int)时的强制类型转换过程。通过对比+=与直接相加再赋值的代码示例,展示了编译器如何处理这些表达式,以及在实际编程
中
可能遇到的数据溢出和类型转换
问题
。
java
左边补0_
Java
中
= 和 += 的区别
博客主要探讨
Java
中
short类型运算的
问题
,如'short s1 = 1; s1 = s1+1;'会报错,而'short s1 = 1; s1 += 1;'不会报错。分析了'+'和'+='
运算符
在运算时的不同机制,指出'+='是位操作,效率更高。
Java SE
62,622
社区成员
307,255
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章