Operador de incremento e atribuição de Java

Estou confuso sobre o operador post ++ e pre ++, por exemplo, no código a seguir

int x = 10;
x = x++;

sysout(x);

imprimirá 10?

Imprime 10, mas eu esperava que imprimisse 11

mas quando eu faço

x = ++x; instead of x = x++;

ele imprimirá onze como eu esperava, então por que x = x ++; não altera o valor de x?