I won't play wanna be moderator, but will try to help you.
int y =0;
int z = 0;
y = y++;
z = y;
y++ is post increment. That is, it takes the value of y, does whatever it is supposed to, then increments it. As an aside try this:
int y=0;
y++;
System.out.println(y);
You could put ++y in this case and get the same result. This is because there is nothing else to do with the value, but increment it, and store it in y.
So what is going on here in a nutshell is the value is y++ is executed, but not stored in y yet, and never will be in this example, then the assigment operator is called, and since y is still 0, z=0.
There are a lot more technical details involved, but this is the basic gist,
i++ == i=i+1
Here is a link the JavaRanch FAQ that addresses this issue.
http://faq.javaranch.com/view?PostIncrementOperatorAndAssignment The FAQ is a pretty good source to search first.