📖 Scenario: Imagine you are creating a program that builds a long message by adding many small pieces of text. Using normal string addition can be slow because strings cannot change once created. Kotlin provides StringBuilder to help build strings faster.
🎯 Goal: You will create a Kotlin program that uses StringBuilder to efficiently build a message by adding multiple words step-by-step, then print the final message.
📋 What You'll Learn
Create a StringBuilder object
Add multiple words to the StringBuilder using append
Convert the StringBuilder to a string
Print the final combined string
💡 Why This Matters
🌍 Real World
Building long text messages, reports, or logs efficiently in apps or scripts.
💼 Career
Using StringBuilder helps write faster and more memory-efficient Kotlin programs, a useful skill for software developers.
Progress0 / 4 steps
1
Create a StringBuilder object
Create a variable called messageBuilder and set it to a new StringBuilder() object.
Kotlin
Hint
Use val messageBuilder = StringBuilder() to create an empty StringBuilder.
2
Add words to the StringBuilder
Use messageBuilder.append to add the words "Hello", " " (space), and "World" in three separate lines.
Kotlin
Hint
Call messageBuilder.append("Hello") and similarly for the space and "World".
3
Convert StringBuilder to String
Create a variable called finalMessage and set it to the string result of messageBuilder.toString().
Kotlin
Hint
Use val finalMessage = messageBuilder.toString() to get the full string.
4
Print the final message
Write println(finalMessage) to display the combined message.
Kotlin
Hint
Use println(finalMessage) to show the message on the screen.
Practice
(1/5)
1. What is the main advantage of using StringBuilder in Kotlin when combining many strings?
easy
A. It automatically sorts the strings alphabetically.
B. It stores strings in a database for later use.
C. It converts strings to uppercase by default.
D. It improves performance by reducing the number of string copies.
Solution
Step 1: Understand string concatenation cost
Regular string concatenation creates new strings each time, which is slow.
Step 2: Role of StringBuilder
StringBuilder appends strings without creating new copies each time, improving speed.
Final Answer:
It improves performance by reducing the number of string copies. -> Option D
Quick Check:
StringBuilder reduces copies [OK]
Hint: StringBuilder avoids repeated copying for faster string joining [OK]
Common Mistakes:
Thinking StringBuilder sorts strings
Assuming it changes string case automatically
Believing it stores strings externally
2. Which of the following is the correct way to create a StringBuilder and add text in Kotlin?
easy
A. val sb = StringBuilder(); sb.add("Hello")
B. val sb = StringBuilder(); sb.append("Hello")
C. val sb = StringBuilder("Hello"); sb.add("World")
D. val sb = StringBuilder(); sb.insert("Hello")
Solution
Step 1: Check StringBuilder creation
Creating with StringBuilder() is correct syntax.
Step 2: Identify correct method to add text
The method to add text is append(), not add() or insert() with a string argument.
Final Answer:
val sb = StringBuilder(); sb.append("Hello") -> Option B
Quick Check:
Use append() to add text [OK]
Hint: Use append() method to add text to StringBuilder [OK]
Common Mistakes:
Using add() instead of append()
Using insert() incorrectly
Passing strings to insert() without index
3. What will be the output of the following Kotlin code?
val sb = StringBuilder()
sb.append("Hi")
sb.append(", ")
sb.append("there!")
println(sb.toString())
medium
A. Hi, there!
B. Hi there!
C. Hi,there!
D. Hi, there
Solution
Step 1: Trace each append call
First append adds "Hi", second adds ", ", third adds "there!".
Step 2: Combine all appended strings
Combined string is "Hi, there!" exactly as appended.
Final Answer:
Hi, there! -> Option A
Quick Check:
Appended strings combined [OK]
Hint: Append strings in order, then call toString() [OK]
Common Mistakes:
Missing spaces in appended strings
Forgetting to call toString()
Assuming append adds spaces automatically
4. Identify the error in the following Kotlin code using StringBuilder:
val sb = StringBuilder()
sb.append("Hello")
sb.append(123)
println(sb)
medium
A. Cannot append an integer directly to StringBuilder.
B. append() method requires two arguments.
C. There is no error in the code.
D. StringBuilder must be initialized with a string.
Solution
Step 1: Check append usage
append can accept integers and converts them to string automatically, so no error here.
Step 2: Check printing StringBuilder directly
Printing StringBuilder object directly calls its toString() method, so it prints the content correctly; no error here either.
Step 3: Re-examine options
Actually, printing sb directly works fine in Kotlin, so no error. The code is correct.
Final Answer:
No error; code runs and prints Hello123 -> Option C
Quick Check:
Printing StringBuilder directly works [OK]
Hint: StringBuilder prints content directly without toString() [OK]
Common Mistakes:
Thinking append can't take integers
Assuming toString() is mandatory for printing
Believing append needs two arguments
5. You want to build a comma-separated list of numbers from 1 to 5 using StringBuilder efficiently. Which code snippet correctly avoids adding an extra comma at the end?
hard
A. val sb = StringBuilder()
for (i in 1..5) {
sb.append(i)
if (i != 5) sb.append(",")
}
sb.toString()
B. val sb = StringBuilder()
for (i in 1..5) {
if (i > 0) sb.append(i).append(",") else sb.append(i)
}
sb.toString()
C. val sb = StringBuilder()
for (i in 1..5) {
sb.append(i).append(",")
}
sb.toString()
D. val sb = StringBuilder()
for (i in 1..5) {
sb.append(i)
sb.append(",")
}
sb.toString().removePrefix(",")
Solution
Step 1: Analyze each option for trailing comma
val sb = StringBuilder()
for (i in 1..5) {
sb.append(i).append(",")
}
sb.toString() adds comma after every number, including last, causing extra comma.
Step 2: Check conditional comma addition
val sb = StringBuilder()
for (i in 1..5) {
if (i > 0) sb.append(i).append(",") else sb.append(i)
}
sb.toString() tries to avoid comma on last number by if-else, but condition i > 0 is always true, so always appends comma after each number, causing trailing comma.
Step 3: Verify correct conditional append
val sb = StringBuilder()
for (i in 1..5) {
sb.append(i)
if (i != 5) sb.append(",")
}
sb.toString() appends number first, then adds comma only if not last number, correctly avoiding trailing comma.
Step 4: Check the remove prefix method
val sb = StringBuilder()
for (i in 1..5) {
sb.append(i)
sb.append(",")
}
sb.toString().removePrefix(",") appends comma always, then removes prefix "," from start (which doesn't exist), leaving trailing comma.
Final Answer:
val sb = StringBuilder()
for (i in 1..5) {
sb.append(i)
if (i != 5) sb.append(",")
}
sb.toString() -> Option A
Quick Check:
Append comma only if not last [OK]
Hint: Add comma only if not last item in loop [OK]
Common Mistakes:
Adding comma after every item including last
Appending number twice in conditional branches
Removing suffix after building string instead of conditional append
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.