Created By: Geoffrey Challen
/ Updated: 2022-08-15

Let's take two big steps forward in our journey in computer science. First, we'll learn how to work with text data in Kotlin, using a data type called a String. Strings also represent another step forward, since they are the first type that we will work with as a Kotlin object. We'll spend a lot of time discussing objects in future lessons, so this is our first taste of what is yet to come.

Working with Text

Language is one of the things that makes humans special. And, while many animals communicate through vocalizations, written language is even more unique to our species. Words and text have long played an incredibly important role in human societies. So clearly this is a kind of data that we want to be able to work with in our computer programs.

Happily, Kotlin has a special data type specifically for working with text:

Note how Strings differ from chars, in that they are enclosed in double quotes (") rather than single quotes ('):

Kotlin Strings are not limited to the limited number of characters that we can store in a char:

A full discussion of Unicode and how characters are represented in modern programming languages is outside the scope of this class. But it's a fascinating story with lots of interesting wrinkles. Safe to say, we have fully overcome the limitations of early programs ability to work with non-latin alphabets. Unicode even includes emoji:

(Note that the in-browser editor gets a bit weird around emoji, probably because they aren't the same width as other characters.)


One useful thing that we can do with Strings is combine them. Kotlin allows us to do this using the + operator:


However, in Kotlin it is usually more convenient to use String interpolation. We've already seen this in action in our println examples:

String interpolation allows us to create new Strings that include the values of variables, which are prefixed by a $, as shown above. This is quite convenient, and we'll prefer it to String concatenation. (It is also more powerful in ways that we haven't explored quite yet!)

Show how to complete the homework problem above. Feel free to cover multiple approaches!

Strings as Objects

On one hand, Strings just seem like any other Kotlin variable. But there is something new going on here. Let's explore together:

Identify some of the interesting features of Strings.

Strings are Objects

The unusual behavior that we observed above is due to the fact that String is not one of the eight basic Kotlin types. In fact everything in Kotlin—including the basic types—is an object! Even the basic types have methods that we can call:

We'll be talking a lot about objects in future lessons, but for now we'll define an object as something that combines state and behavior, or data and functionality. Kotlin objects can be seen as uniting two of the basic building blocks that we've already been exploring: variables and methods. Like a variable, Kotlin objects store information. Strings store a series of characters. But in addition, Kotlin objects also come with built-in methods that we can call! Frequently, those methods operate on the data contained in the object.

Let's look at how that works out with Strings, our first object. Note that this is a screencast, rather than a walkthrough, so that we can consult some documentation together!

Go through the different methods that you can call on Strings and browse the Javadoc documentation.

The best way to familiarize yourself with these features is to browse the official String documentation. Over the set of homework problems on Strings that start with this lesson, we may expect you to use some of their built-in features, and point you at the relevant documentation.

Dot Notation

To call a method on a String, we use so-called dot notation. Let's explore that in the following walkthrough:

Discuss dot notation and using it to call String methods.

Show how to complete the homework problem above. Feel free to cover multiple approaches!

Show how to complete the homework problem above. Feel free to cover multiple approaches!

More Practice

Need more practice? Head over to the practice page.