es que al estarla girando se sobrescriben sus valores por los que tiene en otras posiciones, necesitas hacer una matriz temporal, donde pases allí cada elemento de la matriz original a la copia en si...
Código:
char matemp[][] = new char[dimension][dimension];
//comparar
for(int i=0; i<=dimension; i++) {
for(int j=0; j<=dimension; j++) {
//girar a la derecha
matemp[j][i] = caja[i][j];
}
}
}