Salve a tutti,sono alle prese con java (in realtà ho da poco iniziato a studiare) e vorrei capire innanzitutto alcuni concetti base.Allora per prima cosa ho capito che in java non si parla di puntatori in maniera esplicita,ma di riferimenti. Per la mia esperienza in C++,un riferimento altro non è che un puntatore costante, ossia un puntatore che punta in maniera costante ad un indirizzo!Però se considero tale esempio :

class Location{
private int x;
private int y;
private int z;
.....
.....
}

poi mi dichiaro ed inizializzo due riferimenti ad oggetti di tipo Location :

Location p1=new Location(..);
Location p2=new Location(..);

ora in questo caso ho creato due riferimenti che puntano a due porzioni di memoria differenti!
ma se faccio p2=p1; allora faccio si che p2 punti alla stessa area di memoria a cui punta p1.giusto??ma in tal caso, il riferimento p2 cambia,quindi non punta più in maniera costante ad un indirizzo!come mai??forse i concetti di riferimento in C++ e java sono intesi in maniera differente?
Se invece faccio p2.equals(p1), allora sto considerando se lo stato dei due oggetti (e dunque le variabili x,y,z) sono uguali??
Inoltre vorrei capire meglio come funziona il passaggio dei parametri : infatti a lezione mi hanno detto che i tipi primitivi vengono passati per valore, mentre tt gli altri oggetti (tra cui anche gli array) vengono scambiati per riferimento..
GRAZIE a tutti per le risposte