社区
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为什么不会报错呢,+=的运行机制究竟是怎么样的?求各位解惑!
...全文
247
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
自增怎么算的_
Java
中
自增
运算符
(++)num++ 和算数
运算符
(+)num = num + 1 和 赋值
运算符
(+=)num += 1的区别...
自增
运算符
和+=
运算符
的另一个作用先声明一个变量int num = 0;假设要对该变量加一,通常有三种方法:num = num + 1;num += 1;num++;上述三种都可以使 num 最终结果等于1;可是上述三种运算它们有什么区别呢?其内部运算性质是一样的吗?答案是否定的。num = num + 1最终的运算结果是int型;而 num += num 和 num++ 最终的运算结果的类型取决...
java
+= 赋值
在这两个例子
中
,使用 +=
运算符
将双精度浮点数2.5加到变量 b 上,并将结果4.0赋给变量 b。另外,使用 +=
运算符
将字符串 " world" 连接到字符串变量 str 后面,并将结果 “Hello world” 赋给变量 str。在上述代码
中
,首先定义了一个变量 a,并将它初始化为1。然后使用 +=
运算符
将2加到变量 a 上,并将结果3赋给变量 a。在
Java
中
,+=是一种复合赋值
运算符
,它可以将右侧的值与左侧的值相加,并将结果赋给左侧的变量。
Java
中
的 +
运算符
和 +=
运算符
通过几个小实例来理解
Java
中
的 +
运算符
。 首先
运算符
都要从左往右进行计算。 字符串旁边的+号的含义是拼接。 字符旁边的+号的含义是ASCII码相加。 System.out.println('a'); System.out.println('a'+1); //a是char类型,在和int类型的数据做加减时,会自动转换为int类型,所以是a的ASCII码加1,结果是98 System.out.println("hello"+'a'+1);
加法赋值
运算符
_
Java
中
的+ =加法赋值
运算符
是什么?
加法赋值
运算符
It’s the Addition assignment operator. 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
基础系列 --------------- +=
运算符
在面试当
中
常常会遇到这样一个
问题
:a = a + b和 a += b有一样吗? 我们看a = a + b是一个很简单的操作: (1)现在栈
中
计算出 a + b的值,存在栈空间的一个内存位置&value (2)然后 ...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章