Static binding in Java occurs during Compile time while Dynamic binding occurs during Runtime.
When you are compiling your code, compiler is statisfied by comparing the method calls with the
method definition ,this is static binding.
When your are running this code JVM will decide which method is called based upon the number
and datatype of parameters to arguments, this is dynamic binding.
method overloading is not used from the prospective of memory improvement, it fits in different usage
like sum can be operated on two integers also and two floats also So more towards funtionality.