What is the difference between `String`, `StringBuilder`, and `StringBuffer`?

Technical