黑马程序员技术交流社区
标题: 关于类型转换的问题,真的真的弄不懂 [打印本页]
作者: 米江波 时间: 2015-4-23 22:33
标题: 关于类型转换的问题,真的真的弄不懂
本帖最后由 米江波 于 2015-4-23 22:51 编辑
class Demo
{
public static void main(String[] args)
{
short x=5;
x+=6;
(运算后成了4个字节 可以赋值给short?编译竟没报错!)
System.out.println(x);
}
}
↑↑↑已经解决了,谢谢各位,↓↓↓怎么理解???
还有这道题,那位大神给我抛媳下
设x为float型变量,y为double型变量,a为int型变量,b为long型变量,c为char型变量,则表达式x+y*a/x+b/y+c计算结果的类型为()
A: int B: long C: double √√√ D: Char
我始终相信大牛无处不在的,在线等~
作者: 1017161726 时间: 2015-4-23 22:53
第一个,x+=6,是short型x自加6,它和x=x+6的区别就是它不涉及类型转换问题。第二个,因为类型转换都是向上转型,所以表达失踪要是涉及类型转换,就以最高级类型为准的。所以当然是double了。类型转换顺序:double>float>long>int>short,byte,char。当然这是不涉及字符串的情况下。
作者: 大西洋 时间: 2015-4-23 22:55
低精度会自动转换为高精度,short型的 x 会自动转换为int型,因此不会报错~ 第二题的原理同“低精度自动转高精度”,所以答案为:double~
作者: pengcheng0328 时间: 2015-4-23 22:56
本帖最后由 pengcheng0328 于 2015-4-23 22:59 编辑
+= 这是赋值运算包含了强制类型转换
另外各种类型相加,double最大
作者: 龙腾浩少 时间: 2015-4-23 22:56
你有什么不明白的吗?
short x=5;
x+=6;
这里 += 含有隐式的强制类型转换,将+=右边的数据强制转换成了左边数据的数据类型;
另外下面那一道题,
byte、short、char在计算时首先转换成int类型,当有long参与时转换成 long,当有float时,转换成float,当有double参与运算时转换成double
顺序:byte/short/char --- int ---long --- float --- double
这是原来的一道面试题了。
作者: 米江波 时间: 2015-4-23 23:00
谢谢了各位,明白啦。。。。::D
作者: 飞翔的马驹 时间: 2015-4-23 23:10
double是最高级的所以都会默认转化为double类
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |