首先明确这几种数据类的取值范围:

byte:  -128~127

short: -2^15~2^15-1

char: 0~65536

int: -2^31~2^31-1


请看以下代码:

byte b = 100;

short s = b; //正确,因为byte的取值范围在short取值范围之内。

char c = b; //错误,因为byte的取值范围不完全在char的取值范围内。

c = s;  //错误,因为short的取值范围不完全在char的取值范围内。

int x = b; //正确,因为byte的取值范围在int取值范围之内。

x = s ;  //正确,因为short的取值范围在int取值范围之内。

x = c;  //正确,因为char的取值范围在int取值范围之内。