operador pós-incremento java

Não consigo criar cara ou coroa do código a seguir de "java puzzlers" de joshua bloch.

public class Test22{
 public static void main(String args[]){
  int j=0;
  for(int i=0;i<100;i++){ 
    j=j++;
  }
  System.out.println(j); //prints 0

  int a=0,b=0;
  a=b++;
  System.out.println(a);
  System.out.println(b); //prints 1


 }
}

Não consigo obter a parte em que j imprime 0. Segundo o autor,

j=j++

é similar a

temp=j;
j=j+1;
j=temp;

Mas

a=b++

faz b 1. Então deveria ter avaliado assim,

a=b
b=b+1

Seguindo a mesma lógica, não deveria

j=j++

ser avaliado como,

j=j
j=j+1

Onde a temperatura entra em cena aqui? Qualquer explicação seria muito apreciada. << Estou quebrando minha cabeça sobre isso. ;) >> Agradecemos antecipadamente.

questionAnswers(3)

yourAnswerToTheQuestion