Method declaration in Java has two parts - the method header and method body. The method header contains modifiers, return type, method name, and parameter list. There are different types of modifiers like private, public, protected, final, abstract, static, synchronized and native. Methods can be invoked on objects or classes using the dot operator. Java allows method overloading by having multiple methods with the same name but different parameters. The main method is required to run a Java program and must be public, static and void. Constructors are special methods that are used to initialize objects and have the same name as the class. Objects are stored in the heap and can be accessed only through their references. Garbage collection is the process of automatically