Array semble être passé par référence en Java, comment est-ce possible?

Je peux poster plus de code si j'en ai besoin, mais avant cela, je voudrais juste poser une question générale sur la méthode suivante dans laquelle un tableau est passé, et qu'un autre tableau, mais pour une raison quelconque, le tableau d'origine, celui-ci étant passé de, est également changé, comment ce possible/que dois-je faire?
Grâce

tempBoard est un tableau de même taille que currentState, et temp[k] contient les modifications qui sont apportées dans movePiece, l'état actuel est déclaré dans la méthode et n'est pas une variable globale

private int[][] MiniMaxBaseCase(int[][] currentState, int currentColor)
{
    tempBoard = movePiece(currentState,temp[k]);
}

private int[][] movePiece(int[][] currentState, int[] move)
{
    if(move[0] == -1)
        return currentState;

    //if the piece is just moving
    if(move[4] == -1)
    {
        currentState[move[2]][move[3]] = currentState[move[0]][move[1]];
        currentState[move[0]][move[1]] = 0;
        return currentState;
    }

    //if the piece is jumping another
    if(move[4] != -1)
    {   
        currentState[move[4]][move[5]] = currentState[move[0]][move[1]];
        currentState[move[2]][move[3]] = 0;
        currentState[move[0]][move[1]] = 0;
        return currentState;
    }

    return currentState;
}

source d'informationauteur jbernie2 | 2011-02-03