In this chapter, we delved into the workings of strings, looking at
the difference between the immutable String
and its mutable cousin, StringBuilder
. We saw how to convert other data
types to and from strings, and how to control that formatting, especially
when we consider cultures and languages other than our own.
We saw the various ways in which we can compose strings, and the
performance trade-offs of each technique. Finally, we looked at how
strings are actually represented in memory, and how we may need to convert
between different encodings for different applications, platforms, and
configurations.