社区
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;不等价吗?
...全文
248
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 数据类型转换(强制类型转换) 强制类型转换 将 取值范围大的类型 强制转换成 取值范围小的类型 特点 : 代码需要进行特殊的格式处理, 不能自动完成 转换格式 // 范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据; int i = (int) 1.7; // 强制转化后 i--> 1 代码展示 public class IntLongDoubleChange { public static void main(String[] args) {
byte
,
short
,
char
类型的
运算
byte
类型:-128到127
short
类型:-32768到32767
Java
中
涉及
byte
、
short
和
char
类型的
运算
操作
Java
中
涉及
byte
、
short
和
char
类型的
运算
操作首先会把这些值转换为int类型,然后对int类型值进行
运算
,最后得到int类型的结果。因此,如果把两个
byte
类型值相加,最后会得到一个int类型的结果。如果需要得到
byte
类型结果,必须将这个int类型的结果显式转换为
byte
类型。例如,下面的代码会导致编译失败: class BadArithmetic { sta
对于
char
,
short
和
byte
类型的
运算
对于
char
,
short
和
byte
这些类型在计算时都会提升到int型来计算,所以a+b=3(这个3是int型的,所以我们需要将它强转成为
byte
类型,才不会出错。但是使用 += 或者 ++
运算
符可以执行隐式类型转换。//精度高的转化为低的这叫向下转。public class PlusEquals { public static void main(String[] args)...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章