今天碰巧看到一到面试题,真没有回答上来!望各位解释一下 因为1可以用short表示,但是两个short相加一定返回int,即使这个int可以用short表示 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int和short类型转换的问题 short s1 = (short)1; s1 = s1 + (short)1;这样就对了吧 TO:zhoudut(快乐的Java小菜鸟) 你那样写一样错的 两种写法都是错误的,因为这两个数相加之后的值赋给一个short 型,会丢失精度,容易造成溢出。 TO:zhoudut(快乐的Java小菜鸟) 你那样写一样错的 short s1 = 1; s1 = s1 + 1;表达试中有精度大于int型的运算会取精度大于int型的那个类型进行运算.其它运算都转成整形进行运算,s1+1的结果为整形,所以应该是s1=(short)(s1+1);而s1 += 1中程序运行时相当于进行了强制类型转换,所以是对的. 同意cooled(青山依旧) 说的。 short s1 = 1; s1 += 1; 等价于 s1 = (short)(s1+1); s1 += 1<=> s1=(short)(s1+1);也就是所说的强制类型转换 对,是这个意思。一个是short,一个是int,不强制转换那肯定会出错。 好像是这样的,short s1 = 1; s1 = s1 + 1;//运算s1+1的时候分配了一个空间存放结果然后再把结果赋值给s1.临时结果为int而赋值对象为short---出错。而short s1 = 1; s1 += 1;//不分配临时空间,直接在s1所在空间的内容也即s1加上一。 子类访问父类 权限问题 2个小问题 快来抢分阿 菜鸟学java之求高手帮助 c中的宏定义在java中怎样实现? TM? 这样能不能算作多线程 关于超链接 紧急求助:java中如何取系统时间?--在线等 这是什么原因??jbuilder与sybase的连接 在线等待中 急!急!急!新手请教:如何用drawPolygon画个不自动关闭的多边形,即折线(不用drawLine) 帮QQ-27193873朋友问个java排序的问题 我是初学者,希望好心人帮我解决一个很菜的问题!
这样就对了吧
你那样写一样错的
你那样写一样错的
表达试中有精度大于int型的运算会取精度大于int型的那个类型进行运算.其它运算都转成整形进行运算,s1+1的结果为整形,所以应该是s1=(short)(s1+1);而s1 += 1中程序运行时相当于进行了强制类型转换,所以是对的.
s1 += 1; 等价于 s1 = (short)(s1+1);
也就是所说的强制类型转换
而short s1 = 1; s1 += 1;//不分配临时空间,直接在s1所在空间的内容也即s1加上一。