Welcome again
Fields are created in objects on the heap. The JVM can clear the memory before the objects are created, and initialises fields to default values.
Local variables are on the stack; the stack is not routinely cleared, but all memory is overwritten as the methods are executed. So there is a risk that an uninitialised local variable would occupy space previously used, and there would be an erroneous value in that memory. The compiler therefore enforces rules that require you to initialise all local variables before use. Local variables must be definitely assigned (you can read about it in the
Java® Language Specification (=JLS) but that is sometimes difficult to read.
This JLS section is probably relevant too.