展开全部
在Java中,类型转换分为两种:一是隐式类型转换,二是强制类型转换。
隐式类型转换是低精度数据向高精度数据转换,系统自动执行,不需要编程人员手动实现。
强制类型转换是高精度数据向低精度数据转换,需要编程人员手动实现转换。
精度由低到高的顺序为byte<short<int <long<float<double
所以在楼主的第一个问题中答案是byte short 转为int是都不需要强制转换的。
楼主的追问中提到的问题涉及到了Java的默认类型,在Java中整数型默认为int,
所以无论楼主定义的a b是byte还是short, 其a+b的结果都是默认为int的。而楼主是用byte或short型变量接收a+b的运算结果。又因为int的精度高于byte和short, 所以他们都需要进行强制转换,否则编译是会报错的。
//byte运算
byte a=1;
byte b=2;
byte x=(byte) (a+b);
System.out.println(x);
//short运算
short w=1;
short s=2;
short z=(short) (w+s);
System.out.println(z);
注意:在这个的强制类型转换中,因为涉及到了运算中类型提升问题,所以应当将a+b或w+s 整体用括号扩住,否则编译器仍会报错。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询