¡Hola Misael, espero que estés bien!
Tienes toda la razón en tu observación. En Java, cuando utilizas el operador == para comparar dos objetos, lo que realmente estás comparando son las referencias de esos objetos en la memoria, no los valores o atributos que contienen.
En tu ejemplo:
Pelicula pelicula1 = new Pelicula("Avatar", 2009);
Pelicula pelicula2 = new Pelicula("Avatar", 2009);
Aquí estás creando dos instancias separadas de la clase Pelicula. Aunque ambas instancias contienen los mismos valores para sus atributos, están almacenadas en diferentes ubicaciones de memoria. Por lo tanto, pelicula1 y pelicula2 son referencias a dos objetos distintos, y la comparación pelicula1 == pelicula2 devolverá false, resultando en la salida "Diferentes".
Si quisieras comparar el contenido de los objetos (por ejemplo, si los atributos son iguales), necesitarías sobrescribir el método equals() en la clase Pelicula. Así podrías hacer algo como:
if (pelicula1.equals(pelicula2)) {
System.out.println("Iguales");
} else {
System.out.println("Diferentes");
}
Espero que esto aclare tu duda. ¡Espero haber ayudado y buenos estudios!