Static Language
In this example we declare variable "a" as a String type. It is fixed as a String type. We can not set it to another type.

This is called static typing.
String a;
a = "Whampa";
a = 10;	//COMPILER ERROR

Dynamic Language
In this example we first assign a string value to variable "a".

We then assign a numeric value to variable "a". The variable type can vary as a program runs.

This is called dynamic typing.
a = "Whampa";
a = 10;

Static Language Cons
The main "con" with static typing is verbosity. Declaring "int" may seem minor, but declarations can get very long (a Java example is shown here).

We are considering languages that require variable declaration here.
DynamicList<LinkedList<Association<K, V>>> table;

Dynamic Language Cons
The main "con" with dynamic typing is that errors like the one shown here are not caught.

When coding in a dynamic language we need rock solid test code (which is a always a good idea anyway).
a = 10;
b = "5";
sum = a + b;