您的当前位置:首页正文

类型转换s+=1剖析

来源:花图问答

类型转换面试题

1.short s = 1; s = s + 1;
2.short s = 1; s += 1;

分析

  • 第一个行代码在编译时期就会报错,s属于short类型,当和1做加法是,由于 1是默认类型int,所以会自动提升数据类型,加法结果是一个int类型,然后赋值给一个short,所以会丢失精度。
  • 第二行代码在编译器编译完成的结果如下:
    public static void main(String[] args)
    {
        short s = 1;
        s = (short)(s + 1);
        System.out.println(s);
    }
    
    在编译时期就将类型进行了强制转换,所以不会报错,但是依旧会存在精度丢失的问题。