社区
Java SE
帖子详情
byte/char/short在运算过程中遇到的问题
YoungerDreamer
2014-03-20 09:26:59
各位高手请帮着分析一下为什么 short s=1; s=s+1; 在编译是会有问题提示说不可以将int类型转换成short类型。但是short s=1; s+=1;就没有上述的问题呢?难道s+=1 跟s=s+1;不等价吗?
...全文
246
4
打赏
收藏
byte/char/short在运算过程中遇到的问题
各位高手请帮着分析一下为什么 short s=1; s=s+1; 在编译是会有问题提示说不可以将int类型转换成short类型。但是short s=1; s+=1;就没有上述的问题呢?难道s+=1 跟s=s+1;不等价吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
YoungerDreamer
2014-03-20
打赏
举报
回复
@momoyssy and rumlee s是short型,s+1是short+int,java会自动将类型提升变换为int+int,所以得到的结果还是int,是无法将short=int+int的,需要做一个类型强制转换,s=(short)(s+1). s+=1的意思不能跟上面那样理解,它表示的就是每次自增1,就好像s++,++s一样,无非这里指定了你每次自增的值是多少,你也可以写成s+=2,s+=3都可以的
zhjdg
2014-03-20
打赏
举报
回复
这个怎么解释 short a=1; short b=2; short c=3; a = b+c; // a 是什么型
momoyssy
2014-03-20
打赏
举报
回复
这里涉及到向上和向下兼容的问题,如,一个整型和一个浮点型运算,结果会是一个浮点型,一个浮点和一个双精度运算,结果是双精度,程序总能向大的类型去容纳小的类型(我这里用大和小来表示不太符合,明白我说的是啥就好).s+=1;s++等运算符是自身相加,类型不变,而s=s+1;其实是分两步的,第一步先算s+1;这里1是整型,向大兼容,得出结果是整型,然后再把这个整型赋值给s,这当然是不行的,所以必须得转换.但是反过来,如果s是浮点型的话,会怎样呢,是的,不需要强转,因为向大兼容.
rumlee
2014-03-20
打赏
举报
回复
s+=1; 和 s=s+1; 并不等价 s+1这个表达式返回的是一个整形数字
JAVA 数据类型强制转换详解
本文详细解析JAVA
中
强制类型转换的
过程
,强调将大取值范围类型转为小取值范围类型时,需要特殊格式处理且可能带来精度损失或数据溢出的
问题
。转换规则包括
byte
/
short
/
char
在
运算
时提升为int类型,以及boolean类型不支持转换。
byte
,
short
,
char
类型的
运算
本文介绍了Java
中
byte
、
short
、
char
三种基本数据类型的取值范围,并解释了这些类型之间的转换规则,包括隐式转换与显式转换的概念。此外,还强调了特定的基本类型
运算
会直接得到int类型结果的设计细节。
Java
中
涉及
byte
、
short
和
char
类型的
运算
操作
本文阐述了Java
中
byte
、
short
和
char
类型在
运算
时如何转换为int类型,以及如何避免编译错误,通过示例代码说明了正确转换的重要性。
对于
char
,
short
和
byte
类型的
运算
探讨了Java
中
char
、
short
和
byte
类型的计算提升至int型的
问题
,解释了为何直接相加后赋值会编译错误,以及如何通过+=
运算
符进行隐式类型转换解决此
问题
。
java
short
转
char
_
byte
,
short
,
char
的类型转换
本文深入探讨Java
中
的隐式类型转换和显式类型转换原理,包括
byte
、
char
、
short
等基本类型的赋值规则,以及不同数据类型间的转换
过程
,特别是
byte
到
char
类型转换背后的细节。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章