Java代码问题存在的基础问题

public class Test{
public stastic void main(String args[]){
byte b='a';
int n=100;
char c=65;
b=b;
b=b+1;

最后一行的代码为什么是错的?b=b为什么又是对的?

b=b,是将一个byte类型赋值给byte类型的变量,这是OK的;
第二个是b+1,它结果是int类型,而b是byte类型的变量,所以最后一行是错误的。

b是byte类型,1个字节,
1是int类型,4个字节,
b+1的结果是int,把int赋值给byte会有这个错误提示。
通过强制类型转换避免这个提示
b=(byte)(b+1);