社区
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为什么不会报错呢,+=的运行机制究竟是怎么样的?求各位解惑!
...全文
263
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
作业
写回复
配置赞助广告
用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
自增怎么算的_
Java
中
自增
运算符
(++)num++ 和算数
运算符
(+)num = num + 1 和 赋值
运算符
(+=)num += 1的区别...
自增
运算符
和+=
运算符
的另一个作用先声明一个变量int num = 0;假设要对该变量加一,通常有三种方法:num = num + 1;num += 1;num++;上述三种都可以使 num 最终结果等于1;可是上述三种运算它们有什么区别呢?其内部...
java
+= 赋值
在这两个例子
中
,使用 +=
运算符
将双精度浮点数2.5加到变量 b 上,并将结果4.0赋给变量 b。另外,使用 +=
运算符
将...在
Java
中
,+=是一种复合赋值
运算符
,它可以将右侧的值与左侧的值相加,并将结果赋给左侧的变量。
Java
中
的 +
运算符
和 +=
运算符
通过几个小实例来理解
Java
中
的 +
运算符
。 首先
运算符
都要从左往右进行计算。 字符串旁边的+号的含义是拼接。 字符旁边的+号的含义是ASCII码相加。 System.out.println('a'); System.out.println('a'+1); //a是...
加法赋值
运算符
_
Java
中
的+ =加法赋值
运算符
是什么?
Let’s understand the += operator in
Java
and learn to use it for our day to day programming. 它是加法赋值
运算符
。 让我们了解
Java
中
的+ =
运算符
,并学习如何将其用于日常编程。 x += y in
Java
i...
复合赋值
运算符
“+=、-=、*=、/=、%=”详解
下表列出了“+=、-=、*=、/=、%=”复合赋值
运算符
的描述及例子。 复合赋值
运算符
“+=”,表示的意思是先将
运算符
左边操作数指向的变量值和右边的操作数执行相加操作,然后再将相加的结果赋值给左边的操作数指向的...
Java SE
62,630
社区成员
307,264
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章