users – Difference between ! and * in /etc/shadow file in linux?

In linux , and in /etc/shadow file , in second field ( password field ) , I encounter these two special characters ! and *.
I think there should be some difference between these two as they are totally different characters.
so what is the difference ?
and also , is there something like !! ? if yes , they what is its purpose and how it is different from above mentioned ?