What does the safe call operator (?.) do in Kotlin?
It allows you to safely access a property or call a method on an object that might be null, preventing a NullPointerException by returning null instead of crashing.
Click to reveal answer
beginner
How does the safe call operator (?.) behave when the object is null?
When the object is null, the safe call operator returns null immediately without executing the method or property access.
Click to reveal answer
beginner
Example: What is the output of this Kotlin code?
val name: String? = null
println(name?.length)
The output is 'null' because 'name' is null, so 'name?.length' safely returns null instead of throwing an error.
Click to reveal answer
intermediate
Can the safe call operator (?.) be chained in Kotlin?
Yes, you can chain multiple safe calls like 'obj?.property?.method()' to safely navigate through multiple nullable references.
Click to reveal answer
intermediate
What is the difference between the safe call operator (?.) and the non-null asserted call (!!) in Kotlin?
The safe call operator returns null if the object is null, avoiding exceptions. The non-null asserted call (!!) throws a NullPointerException if the object is null.
Click to reveal answer
What does the safe call operator (?.) return if the object is null?
Anull
BThrows NullPointerException
CEmpty string
DZero
✗ Incorrect
The safe call operator returns null when the object is null, preventing exceptions.
Which Kotlin operator throws an exception if the object is null?
A?.
B?
C!!
D?:
✗ Incorrect
The '!!' operator throws a NullPointerException if the object is null.
How would you safely access the length of a nullable String 'text'?
Atext.length
Blength?.text
Ctext!!
Dtext?.length
✗ Incorrect
Using 'text?.length' safely accesses length if 'text' is not null.
Can you chain safe calls like 'obj?.property?.method()' in Kotlin?
AYes
BNo
COnly for properties
DOnly for methods
✗ Incorrect
Safe calls can be chained to safely navigate multiple nullable references.
What is the output of this code?
val user: User? = null
println(user?.name ?: "Unknown")
Anull
BUnknown
CThrows exception
DEmpty string
✗ Incorrect
The Elvis operator (?:) provides 'Unknown' when 'user?.name' is null.
Explain how the safe call operator (?.) helps prevent null pointer exceptions in Kotlin.
Think about what happens when you try to access something on a null object.
You got /4 concepts.
Describe a situation where chaining safe calls (?.) would be useful.
Imagine you have an object inside another object, both could be null.
You got /4 concepts.
Practice
(1/5)
1. What does the safe call operator ?. do in Kotlin?
easy
A. It forces the program to crash if the object is null.
B. It converts a non-null object to null.
C. It accesses a property or calls a function only if the object is not null.
D. It always returns a default value when the object is null.
Solution
Step 1: Understand the purpose of the safe call operator
The safe call operator ?. is used to safely access properties or call functions on objects that might be null.
Step 2: Behavior when object is null
If the object is null, the operator returns null instead of throwing an error or crashing the program.
Final Answer:
It accesses a property or calls a function only if the object is not null. -> Option C
Quick Check:
Safe call operator = Access if not null [OK]
Hint: Safe call operator skips calls on null objects [OK]
Common Mistakes:
Thinking it crashes on null
Confusing with non-null assertion operator (!!)
Assuming it provides default values
2. Which of the following is the correct syntax to safely call the length property of a nullable String name?
easy
A. val len = name.length
B. val len = name?.length
C. val len = name!!length
D. val len = name?length
Solution
Step 1: Identify the safe call syntax
The safe call operator is ?., used as object?.property or object?.function().
Step 2: Check each option
val len = name.length uses . without safety, which can cause a crash if name is null. val len = name?.length correctly uses ?.. val len = name!!length uses !! incorrectly with property access. val len = name?length uses invalid syntax ?length.
Final Answer:
val len = name?.length -> Option B
Quick Check:
Safe call syntax = ?. [OK]
Hint: Safe call uses ?. between object and property [OK]
Common Mistakes:
Using . without safe call on nullable
Confusing !! with ?.
Writing invalid syntax like ?property
3. What is the output of this Kotlin code?
val text: String? = null
println(text?.length)
medium
A. 0
B. Throws NullPointerException
C. Empty string
D. null
Solution
Step 1: Analyze the nullable variable
The variable text is null, so accessing text?.length uses the safe call operator.
Step 2: Evaluate the safe call result
Since text is null, text?.length returns null instead of crashing or returning 0.
Final Answer:
null -> Option D
Quick Check:
Null safe call on null = null [OK]
Hint: Safe call returns null if object is null [OK]
Common Mistakes:
Expecting 0 as length of null
Thinking it throws an exception
Assuming empty string output
4. Find the error in this Kotlin code snippet:
val user: User? = null
val nameLength = user.length?.toString()
medium
A. The safe call operator should be before length, like user?.length.
B. Safe call operator is used incorrectly on a non-nullable property.
C. The variable user cannot be null.
D. The toString() function cannot be called on an Int.
Solution
Step 1: Identify the nullable object and property access
user is nullable, so accessing length directly without safe call is unsafe.
Step 2: Correct safe call placement
The safe call operator must be used on the nullable object: user?.length. The code user.length?.toString() tries to access length on a nullable object without safety, causing an error.
Final Answer:
The safe call operator should be before length, like user?.length. -> Option A
Quick Check:
Safe call must be on nullable object [OK]
Hint: Put ?. right after nullable variable name [OK]
Common Mistakes:
Using safe call after property instead of before
Ignoring nullability of variable
Misunderstanding function call on nullable
5. Given a nullable list of nullable strings val items: List?, which expression safely gets the length of the first string or returns null if any part is null?
hard
A. items?.get(0)?.length
B. items.get(0).length
C. items!![0]!!.length
D. items?[0].length
Solution
Step 1: Understand the nullability
items can be null, and its elements can also be null. So both the list and the first element might be null.
Step 2: Use safe calls to avoid errors
To safely get the length of the first string, use items?.get(0)?.length. This returns null if items or the first element is null.
Final Answer:
items?.get(0)?.length -> Option A
Quick Check:
Chain safe calls for nested nullables [OK]
Hint: Chain ?. for each nullable level [OK]
Common Mistakes:
Using !! which throws exception if null
Missing safe call on list or element
Using invalid syntax like ?[0]
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.