Bird
Raised Fist0
Kotlinprogramming~20 mins

String type and immutability in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
String Mastery in Kotlin
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Kotlin code?

Consider the following Kotlin code snippet:

val original = "hello"
val modified = original.replace('h', 'j')
println(original)
println(modified)

What will be printed?

Kotlin
val original = "hello"
val modified = original.replace('h', 'j')
println(original)
println(modified)
Ahello\njello
Bhello\nhello
Cjello\njello
Djello\nhello
Attempts:
2 left
💡 Hint

Remember that Kotlin strings are immutable. The replace function returns a new string.

🧠 Conceptual
intermediate
1:30remaining
Why are Kotlin strings immutable?

Which of the following is the main reason Kotlin strings are immutable?

ATo allow strings to be changed in place without creating new objects
BTo make strings mutable and faster to change
CTo prevent strings from being used in collections
DTo allow strings to be safely shared between threads without synchronization
Attempts:
2 left
💡 Hint

Think about thread safety and performance.

🔧 Debug
advanced
2:00remaining
What error does this Kotlin code produce?

Examine this Kotlin code:

var text = "hello"
text[0] = 'j'
println(text)

What error will this code cause?

Kotlin
var text = "hello"
text[0] = 'j'
println(text)
AError: Val cannot be reassigned
BError: Unresolved reference to 'text'
CError: String cannot be assigned to by index
DNo error, prints 'jello'
Attempts:
2 left
💡 Hint

Think about whether Kotlin strings allow changing characters by index.

🚀 Application
advanced
2:30remaining
How to create a new string with a changed first character?

You want to change the first character of a Kotlin string str to 'J'. Which code snippet correctly does this?

Aval newStr = "J" + str.substring(1)
Bstr[0] = 'J'; val newStr = str
Cval newStr = str.replaceAt(0, 'J')
Dval newStr = str.setCharAt(0, 'J')
Attempts:
2 left
💡 Hint

Remember strings are immutable, so you must create a new string.

❓ Predict Output
expert
3:00remaining
What is the output of this Kotlin code involving string references?

Consider this Kotlin code:

val a = "test"
val b = a
val c = b.replace('t', 'b')
println(a)
println(b)
println(c)

What will be printed?

Kotlin
val a = "test"
val b = a
val c = b.replace('t', 'b')
println(a)
println(b)
println(c)
Abest\nbest\nbesb
Btest\ntest\nbesb
Ctest\ntest\ntest
Dtest\nbest\nbesb
Attempts:
2 left
💡 Hint

Remember that b is just a reference to a, and strings are immutable.

Practice

(1/5)
1. What does it mean that a String in Kotlin is immutable?
easy
A. Strings can only hold numbers, not letters.
B. You can change characters inside the String directly.
C. Once created, the text inside a String cannot be changed.
D. Strings automatically update when variables change.

Solution

  1. Step 1: Understand immutability concept

    Immutability means the object cannot be changed after creation.
  2. Step 2: Apply to Kotlin String

    Kotlin Strings cannot be modified once created; any change creates a new String.
  3. Final Answer:

    Once created, the text inside a String cannot be changed. -> Option C
  4. Quick Check:

    String immutability = cannot change text [OK]
Hint: Remember: Strings are like printed paper, not editable [OK]
Common Mistakes:
  • Thinking you can change characters inside the same String
  • Confusing immutability with variable reassignment
  • Believing Strings hold only numbers
2. Which of the following is the correct way to concatenate two Strings str1 and str2 in Kotlin?
easy
A. str1 & str2
B. str1 + str2
C. str1.join(str2)
D. str1.append(str2)

Solution

  1. Step 1: Recall Kotlin String concatenation syntax

    Kotlin uses the + operator to join two Strings.
  2. Step 2: Check each option

    Only str1 + str2 is valid Kotlin syntax for concatenation.
  3. Final Answer:

    str1 + str2 -> Option B
  4. Quick Check:

    Use + to join Strings [OK]
Hint: Use + to combine Strings, like adding words together [OK]
Common Mistakes:
  • Using methods like append or join which don't exist on Kotlin String
  • Using & which is not a Kotlin operator for Strings
  • Trying to modify Strings directly
3. What will be the output of this Kotlin code?
val text = "Hello"
val newText = text + " World"
println(text)
medium
A. Hello
B. Hello World
C. World
D. HelloWorld

Solution

  1. Step 1: Understand String immutability and concatenation

    The original String text remains unchanged after concatenation.
  2. Step 2: Analyze the print statement

    Only text is printed, which is still "Hello".
  3. Final Answer:

    Hello -> Option A
  4. Quick Check:

    Original String unchanged = Hello [OK]
Hint: Printing original String shows it stays the same [OK]
Common Mistakes:
  • Assuming original String changes after + operation
  • Confusing newText with text in print
  • Ignoring immutability of Strings
4. Identify the error in this Kotlin code snippet:
var greeting = "Hi"
greeting[0] = 'B'
println(greeting)
medium
A. println cannot print Strings.
B. Variable greeting should be val, not var.
C. Single quotes cannot be used for characters.
D. You cannot change characters in a String by index.

Solution

  1. Step 1: Check String mutability rules

    Kotlin Strings are immutable; you cannot assign to an index.
  2. Step 2: Analyze the code line causing error

    Line greeting[0] = 'B' tries to change a character, which is invalid.
  3. Final Answer:

    You cannot change characters in a String by index. -> Option D
  4. Quick Check:

    Strings immutable = no index assignment [OK]
Hint: Strings are like frozen text, can't change letters inside [OK]
Common Mistakes:
  • Thinking var allows character change inside String
  • Confusing char literals with strings
  • Believing println can't print Strings
5. Given a list of words, how can you create a new list with each word appended by "!" without changing the original words?
val words = listOf("cat", "dog", "bird")
val excitedWords = ???
Which Kotlin code correctly does this considering String immutability?
hard
A. val excitedWords = words.map { it + "!" }
B. val excitedWords = words.apply { this[0] += "!" }
C. val excitedWords = words.forEach { it + "!" }
D. val excitedWords = words.replace("", "!")

Solution

  1. Step 1: Understand immutability and list transformations

    Strings cannot be changed, so create new Strings with + "!".
  2. Step 2: Use map to transform each word into a new String

    map returns a new list with transformed elements without modifying original.
  3. Final Answer:

    val excitedWords = words.map { it + "!" } -> Option A
  4. Quick Check:

    Use map + + operator for new list [OK]
Hint: Use map to create new list with modified Strings [OK]
Common Mistakes:
  • Trying to modify list elements directly with apply or forEach
  • Using replace on list instead of Strings
  • Assuming original list changes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard