StringBuilder helps you build text quickly without making many copies. It makes your program faster when joining many pieces of text.
When you need to join many words or sentences together.
When you want to create a long message step by step.
When you want to avoid slow text joining in loops.
When you want to build text efficiently in games or apps.
When you want to save memory by not creating many temporary strings.
Syntax
Kotlin
val sb = StringBuilder()
sb.append("Hello")
sb.append(" World")
val result = sb.toString()
Use append() to add text to the builder.
Call toString() to get the final combined text.
Examples
This adds three parts and prints "Hi, there!".
Kotlin
val sb = StringBuilder()
sb.append("Hi")
sb.append(", ")
sb.append("there!")
println(sb.toString())
You can start with some text inside the builder.
Kotlin
val sb = StringBuilder("Start")
sb.append(" and continue")
println(sb.toString())
Use StringBuilder in loops to add numbers efficiently.
Kotlin
val sb = StringBuilder()
for (i in1..3) {
sb.append(i).append(", ")
}
println(sb.toString())
Sample Program
This program builds a list of numbers separated by commas using StringBuilder for better speed.
Kotlin
fun main() {
val sb = StringBuilder()
sb.append("Numbers: ")
for (i in1..5) {
sb.append(i)
if (i < 5) sb.append(", ")
}
println(sb.toString())
}
OutputSuccess
Important Notes
Using + to join strings creates new copies each time, which is slower.
StringBuilder is mutable, so it changes the same object instead of making new ones.
Always call toString() at the end to get the combined text.
Summary
StringBuilder helps join text faster by avoiding many copies.
Use append() to add pieces of text.
Call toString() to get the final string.
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.