Como os operadores pós-incremento (i ++) e pré-incremento (++ i) funcionam em Java?

Você pode me explicar a saída desse código Java?

int a=5,i;

i=++a + ++a + a++;
i=a++ + ++a + ++a;
a=++a + ++a + a++;

System.out.println(a);
System.out.println(i);

A saída é 20 em ambos os casos