Using the Elvis Operator (?:) for Default Values in Kotlin
📖 Scenario: Imagine you are building a simple app that greets users. Sometimes, the user's name might not be provided, so you want to use a default greeting instead.
🎯 Goal: You will create a Kotlin program that uses the Elvis operator ?: to provide a default greeting when the user's name is missing.
📋 What You'll Learn
Create a nullable variable for the user's name
Create a default greeting string
Use the Elvis operator ?: to assign a greeting message
Print the final greeting message
💡 Why This Matters
🌍 Real World
Many apps need to handle missing or optional information gracefully, like showing a default name when the user does not provide one.
💼 Career
Understanding how to use the Elvis operator helps you write safer Kotlin code that avoids crashes from null values.
Progress0 / 4 steps
1
Create a nullable variable for the user's name
Create a nullable String variable called userName and set it to null.
Kotlin
Hint
Use String? to make the variable nullable and assign null to it.
2
Create a default greeting string
Create a String variable called defaultGreeting and set it to "Hello, Guest!".
Kotlin
Hint
Just assign the string "Hello, Guest!" to the variable defaultGreeting.
3
Use the Elvis operator to assign a greeting message
Create a String variable called greeting that uses the Elvis operator ?: to assign userName if it is not null, or defaultGreeting if it is null.
Kotlin
Hint
Use userName ?: defaultGreeting to assign greeting.
4
Print the final greeting message
Write a println statement to print the value of greeting.
Kotlin
Hint
Use println(greeting) to show the greeting on the screen.
Practice
(1/5)
1. What does the Elvis operator ?: do in Kotlin?
easy
A. Checks if two values are equal
B. Converts a value to a string
C. Throws an exception if the left value is null
D. Returns the left value if it is not null; otherwise returns the right value
Solution
Step 1: Understand the Elvis operator purpose
The Elvis operator ?: is used to provide a default value when the left side is null.
Step 2: Analyze the behavior
If the left value is not null, it returns that value; otherwise, it returns the right value as a fallback.
Final Answer:
Returns the left value if it is not null; otherwise returns the right value -> Option D
Quick Check:
Elvis operator = default value if null [OK]
Hint: Elvis operator gives a fallback value if null [OK]
Common Mistakes:
Thinking it compares two values
Assuming it throws an error on null
Confusing it with string conversion
2. Which of the following is the correct syntax to use the Elvis operator in Kotlin?
easy
A. val result = value ??: defaultValue
B. val result = value ? defaultValue
C. val result = value ?: defaultValue
D. val result = value ?:? defaultValue
Solution
Step 1: Recall the correct Elvis operator syntax
The Elvis operator is written as ?: without any extra characters or spaces.
Step 2: Match the syntax with options
val result = value ?: defaultValue uses ?: correctly between the variable and the default value.
Final Answer:
val result = value ?: defaultValue -> Option C
Quick Check:
Correct Elvis syntax = value ?: defaultValue [OK]
Hint: Elvis operator is ?: exactly, no extra symbols [OK]
Common Mistakes:
Using single question mark instead of ?:
Adding extra question marks
Swapping the order of symbols
3. What will be the output of this Kotlin code?
val name: String? = null
val displayName = name ?: "Guest"
println(displayName)
medium
A. null
B. Guest
C. name
D. Compilation error
Solution
Step 1: Check the value of name
The variable name is explicitly set to null.
Step 2: Apply the Elvis operator
Since name is null, displayName gets the default value "Guest".
Final Answer:
Guest -> Option B
Quick Check:
null ?: "Guest" = "Guest" [OK]
Hint: If left is null, Elvis returns right side [OK]
Common Mistakes:
Assuming it prints null
Thinking it prints variable name
Expecting a compile error
4. Identify the error in this Kotlin code snippet using the Elvis operator:
val input: String? = null
val output = input ? "Default"
medium
A. Incorrect operator used; should be ?: instead of ?
B. Missing right side value after Elvis operator
C. Variable input cannot be nullable
D. No error; code is correct
Solution
Step 1: Examine the operator used
The code uses ? instead of the Elvis operator ?:.
Step 2: Understand correct Elvis operator usage
The Elvis operator must be ?: to provide a default value when the left side is null.
Final Answer:
Incorrect operator used; should be ?: instead of ? -> Option A
Quick Check:
Elvis operator must be ?: not ? [OK]
Hint: Elvis operator always uses ?: not just ? [OK]
Common Mistakes:
Using single question mark instead of Elvis operator
Forgetting the default value after ?:
Assuming nullable variables cause error here
5. Given the following Kotlin code, what will be the value of finalScore?
fun calculateScore(score: Int?): Int {
return score ?: 0
}
val userScore: Int? = 5
val finalScore = calculateScore(userScore ?: 10)
hard
A. 5
B. 10
C. 0
D. Compilation error
Solution
Step 1: Evaluate the expression inside the function call
The argument is userScore ?: 10. Since userScore is 5 (not null), the expression evaluates to 5.
Step 2: Call calculateScore with 5
The function returns the score if not null, so it returns 5.
Final Answer:
5 -> Option A
Quick Check:
userScore ?: 10 = 5, function returns 5 [OK]
Hint: Elvis operator picks first non-null value [OK]
Common Mistakes:
Thinking userScore ?: 10 returns 10
Confusing function return with argument default
Assuming null causes error here
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.