Static vs Dynamic typed language

Type checking is the process of verifying and enforcing the constraints of types.

  1. Statically typed programming languages do type-checking at compile-time. Examples: Java, C, C++.
  2. Dynamically typed programming languages do type-checking at run-time. Examples: Perl, Ruby, Python, PHP, JavaScript.

Deeper understanding:

Extra reference (Advance)