Java Consulta de operador incremental (++ i e i ++) [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Es Java "paso por referencia" o "paso por valor"? 78 respuestasJava NUNCA pasa por referencia, ¿verdad? ... ¿verdad? [duplicar 6 respuestas

Tengo el siguiente 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
    }
}

Mi salida esperada está en los comentarios. La salida real está debajo:

0
2
1
3
2
2

Me estoy confundiendo con las llamadas a funciones y el operador inicial. ¿Alguien puede explicar amablemente el resultado real?

Respuestas a la pregunta(7)

Su respuesta a la pregunta