黑马程序员技术交流社区

标题: 数据类型转换小问题 [打印本页]

作者: 黄小钒    时间: 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