In method or class scope, the line below compiles (with warning):
int x = x = 1;
In class scope, where variables get their default valu
In int x = x + 1; you add 1 to x , so what is the value of x, it's not created yet.
But in int x=x=1; will compile with no error because you assign 1 to x.
Your first piece of code contains a second = instead of a plus. This will compile anywhere while the second piece of code will not compile in either place.