People apparently smarter than I have said that it's not necessary to set local scope variables to null because the compiler is smart enough to figure out when they are not needed anymore.
However, if there are member variables that will remain longer than they are needed, it is a good idea to set them to null in order to help prevent memory leaks.
It's good practice to declare variables in the tightest possible scope. Once they go out of scope the objects they refer to are eligible for garbage collection, and you have nothing to gain by explicitly setting them to null.
That said, there are certain Java classes that attach native resources. If you create() a Graphics object, it's good practice to dispose() it when no longer needed. Under certain circumstances, it may be desirable or even necessary to flush() an Image. A top level Swing or AWT window can be dispose()d to release native resources. Various Listeners may still be reachable long after they are needed; you don't need to set them to null but you may need to removeXxxListener(...) to make them eligible for GC.
And of course streams and database connections should always be properly closed.
There are no new questions, but there may be new answers.