Problema con punteros en Java

ryuk
17 de Octubre del 2009
Antes que me digan que Java no usa punteros, no son punteros explicitamente, si no referencias a objetos en la memoria para crear estructuras de datos.

Mi duda es la siguiete:
En este programa...

nodo a = new nodo();
nodo b = new nodo();

y la clase nodo:
class nodo{
int dato;
nodo liga=null;
}

Al declarar ambos nuevos objetos se imprimen con los valores por defecto como liga = null y su localizacion en memoria totalmente distinta. Pero al modificar algun valor como:

a.dato = 15;

Entonces b.dato tambien es modificado, de alguna forma el compilador iguala las dos referencias al mismo objeto. Alguien sabe porque pasa eso?