Java Incremental query do operador (++ iei ++) [duplicado]

Esta pergunta já tem uma resposta aqui:

Java é "passagem por referência" ou "passagem por valor"? 78 respostas Java NUNCA passa por referência, certo? ... certo? [duplicado respostas

Eu tenho o seguinte código

public class Book {
    private static int sample1(int i) {
        return i++;
    }
    private static int sample2(int j) {
        return ++j;
    }

    public static void main(String[] arguments){ 
        int i = 0;
        int j = 0;
        System.out.println(sample1(i++)); //0
        System.out.println(sample1(++i)); //1
        System.out.println(sample2(j++));//1
        System.out.println(sample2(++j));//2
        System.out.println(i);//2
        System.out.println(j);//2
    }
}

Minha saída esperada está nos comentários. A saída real está abaixo:

0
2
1
3
2
2

Estou ficando confuso com as chamadas de função e o operador incremental. Alguém pode gentilmente explicar o resultado real?

questionAnswers(7)

yourAnswerToTheQuestion