黑马程序员技术交流社区
标题:
数据类型转换小问题
[打印本页]
作者:
黄小钒
时间:
2012-4-13 21:21
标题:
数据类型转换小问题
class Test
{
public static void main(String[] args)
{
short s1 =1;
s1 = s1+s1;
System.out.println(s1);
}
}
//s1 为 short类型,s1+s1 为何编译会出错?此处发生数据类型转换了吗?
作者:
尹博
时间:
2012-4-13 21:37
精度小于int的数值在运算的时候会自动转为int后计算,所以你要进行强转:s1 = (short)(s1+s1)
作者:
陈坚
时间:
2012-4-13 21:56
Java中涉及byte、short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果。如果需要得到short类型结果,必须将这个int类型的结果转换为short类型s1 = (short)(s1+s1),在这个过程中计算机中数值进行运算的时候可能会发生溢出错误。所以在进行运算时要考虑一下数值的大小,以免溢出。
作者:
蒋亮
时间:
2012-4-13 22:47
进行s1+s1运算时,会自动提升s1的类型,所以结果为int型,再赋值给s1需强制类型转换
作者:
高铭
时间:
2012-4-13 22:51
不用强转也可以
把s1=s1+s1 改成 s1+=s1 两次运算变成一次运算
作者:
张一凡
时间:
2012-4-13 22:55
因为s1是变量,而变量的值是会变化的,因此我们不确定其具体的值,所以默认使用int类型进行存储。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2