(+=)运算符中隐藏的强制类型转换问题

时间:2022-09-24 20:33:37
 * 面试题
short s=1, s = s+1; 
short s=1, s+=1;
上面两个代码有没有问题,如果有,那里有问题

第一个有问题:
s = s + 1 ;
默认提升byt,short,char-->int-->long-->float-->double:
s-->int类型:s+1:属于int类型:
用短整型接收int类型的值:有问题!必须强制类型转换

第二个代码:s+=1;扩展的赋值运算符,隐藏了一个强制类型转换,所以不会出错


 * */
public class OperatorDemo2 {
public static void main(String[] args) {

// short s = 1 ;
// //必须强制类型转换
// s = (short) (s + 1) ;

short s =1 ;
s +=1 ;//隐藏了一个强制类型转换 s = (short)(s+1) ;
System.out.println(s);




}
}