public class Test{
public static void main(String[]args)
{
byte b1=50,b2=12;
byte b3=b1-b2;
short s1=20,s2=12;
short s3=s1-s2;
System.out.print(s3);
System.out.print(b3);
}
}
帮我分析上面的原因!谢谢!
public static void main(String[]args)
{
byte b1=50,b2=12;
byte b3=b1-b2;
short s1=20,s2=12;
short s3=s1-s2;
System.out.print(s3);
System.out.print(b3);
}
}
帮我分析上面的原因!谢谢!
你得造型啊。
byte b3=(byte) (b1-b2);
short s1=20,s2=12;
short s3=(short) (s1-s2);
System.out.println(s3);
System.out.println(b3);
所有字面是整数的都是int型,所以加减后还是int型,当转型向范围小转换时,编译器就会报错。
所以必须在加减后强制类型转换, 如:byte b3 = (byte)(b1-b2);
2.一个小的类型赋给一个大类型时要强制转换,以通知编译器,你对强转的后果负责.
数据转型只能向字节较长的类型转
b3=b1-b2即为int向byte的转换,需要强制转换(byte)