为何short s1 = 1;是对的,而float f=3.4;是错的;为什么 int转short不需要强转
解决方案 »
- 在spring 的官网上没找到jar包下载,只有spring tool suit请问怎么获得jar包
- mysql 外键必须设置为空,可是会出现查询错误,该怎么解决啊?
- struts2的ModelDriven是否支持多对象。。
- 问一个问题
- ibatis spring_c3p0 事务(进程 ID 53)与另一个进程已被死锁在 A| communication buffer 资源上,
- 请高手帮助啊
- ADODB.Recordset (0x800A0BB9)参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
- [求助] Log4j按类输出日志
- 求助:如何用xmill压缩xml??????
- 请问JAVA如何调用VC++编写的COM组件?多谢了!
- token获取之后的问题
- Java从2019年1月起收费,开源社区上的Java项目貌似要降温了?Java的冬天要来了?
从数据的角度说,就是排位较高的数值类型空间较大,字节数多,放入低位次时挤不下,数据溢出导致数据缺失,编译系统就报错,说:“大王,篮子装不下了,怎么办!”;强制转换的意思就是你对编译系统说:“没事,我家有矿,多出来的那部分数据我不要了,扔掉就行。“【手动滑稽】
这种情况有两种改法:
1. float F1=3.4f; //将3.4声明为float型; (系统默认小数为double型);
2. float F1=(float) 3.4; //利用强制类型转换(编译系统会提示你的);
个人见解,欢迎讨论
小数直接量,默认是double类型。所以float f = 3.4; 会报错,由double类型转为float类型是大转小,需要强转。
记住小类型转大类型会自动转换,大类型到小类型需要强转,因为会丢失精度或者溢出。(布尔型不参与,char类型相当于int类型)
整数直接量可以直接赋值给byte,short,char,但是不能超出范围。
byte,short,char型数据参与运算时,先一律转换为int再运算。
所以:short s = 5;
s = s + 10; // 这里会出现编译错误,因为s参与运算,这时会自动转换为int型,s + 10 的值为int型,int型不能直接赋值给short型,需要强转
s += 10; // 这里不会出现错误,因为扩展赋值运算符自带强转功能
大概就是这些注意的点。