Strict enforcement of type rules with no exceptions. Incorrect type usage can be detected either at run time or at compile time. Strong typing catches more type errors than weak typing, resulting in fewer hard errors. In a strongly typed language, conversion between types requires the use of explicit conversion functions as opposed to implicit type coercion.
Typing strength is a continuum; ML is more strongly typed than Java, which is more strongly typed than C.
Strong or weak typing is independent of the choice between static typing and dynamic typing. Among strongly typed languages, Ada, Java, Haskell and ML are statically typed, whereas Python and Ruby are dynamically typed.