The String class represents an immutable string.

For mutable strings you can use StringBuilder or StringJoiner classes from Java.

A string literal is represented by sequence of characters in double quotes like "Hello". Escaping is allowed.

A raw string is delimited by a triple quote ("""), contains no escaping and can contain newlines and any other characters. By default, | is used as margin prefix, but you can choose another character.

You can access to the character via the indexing operation like str[i].

You can iterate over string characters with a for loop.

val str="Hello World!\n"

for (ch in str) {

val text1 = """
    for (c in "foo")

val text2 = """
    |Tell me and I forget.
    |Teach me and I remember.
    |Involve me and I learn.
    |(Benjamin Franklin)

escape sequences

esc. seq. description
\" Inserts a double quote.
\' Inserts a single quote.
\\ Inserts a backslash.
\n Inserts a new line.
\r Inserts a carriage return.
\v Inserts a vertical tab.
\t Inserts a tab.
\f Form feed.
\uXXXX Inserts a unicode character with code XXXX (4 hex digits).


The == operator checks whether two strings are structurally equal. This is same as equals() method in Java.

The === operator checks whether two variables are pointing to the same object. This is same as == operator in Java.


You can add templates into string literals. Just specify name or expression in curly braces after $ sign.

val i = 10
println("i = $i") // prints "i = 10"

val s = "abc"
println("$s.length is ${s.length}") // prints "abc.length is 3"


Class String have all fuctionality of Java String class.

Unlike Java, methods were added as extensions.