1 程序源码
/**
*作者 : iechenyb<br>
*类描述: 说点啥<br>
*创建时间: 2017年8月20日
*/
public class 类型转型 {
Log log = LogFactory.getLog(类型转型.class);
public static void main(String[] args) {
short s1 = 1;
s1+=1;//编译后会强制转型
byte b1 = 1;
b1+=1;//编译后会强制转型
int i1=1;
i1+=1;
long l1 = 1;
l1+=1;
System.out.println(s1+","+b1+","+i1+","+l1);
}
}
2 编译后代码
public class 类型转型
{
Log log = LogFactory.getLog(类型转型.class);
public static void main(String[] args)
{
short s1 = 1;
s1 = (short)(s1 + 1);
byte b1 = 1;
b1 = (byte)(b1 + 1);
int i1 = 1;
i1++;
long l1 = 1L;
l1 += 1L;
System.out.println(s1 + "," + b1 + "," + i1 + "," + l1);
}
}
结论:
①
会出现编译错误。s+1的时候,结果会被“升格”为int类型。把int赋给short当然编译错误。
②
对于“+=”操作,系统会自动执行类型转换操作,等价于s=(short)s+1。