📖 Scenario: You are creating a simple Kotlin program to store and display a person's name and age. Kotlin treats types as non-nullable by default, which means variables cannot hold null unless explicitly allowed.
🎯 Goal: Build a Kotlin program that defines a non-nullable name variable and a non-nullable age variable, then prints them.
📋 What You'll Learn
Create a non-nullable name variable of type String with the value "Alice".
Create a non-nullable age variable of type Int with the value 30.
Print the name and age variables in the format: Name: Alice, Age: 30.
💡 Why This Matters
🌍 Real World
Non-nullable types help prevent errors by ensuring variables always have valid values, which is important in apps that handle user data.
💼 Career
Understanding Kotlin's type system is essential for Android developers and anyone working with Kotlin to write safe and reliable code.
Progress0 / 4 steps
1
Create non-nullable variables
Create a non-nullable variable called name of type String and set it to "Alice".
Kotlin
Hint
Use val to declare a read-only variable and specify the type String without a question mark.
2
Add a non-nullable age variable
Add a non-nullable variable called age of type Int and set it to 30 below the name variable.
Kotlin
Hint
Remember to declare age as Int without a question mark to keep it non-nullable.
3
Create a message string
Create a variable called message of type String that uses an f-string (string template) to combine name and age in the format: Name: Alice, Age: 30.
Kotlin
Hint
Use Kotlin string templates with $variableName inside double quotes.
4
Print the message
Print the message variable using println.
Kotlin
Hint
Use println(message) to display the message on the screen.
Practice
(1/5)
1. In Kotlin, what happens if you declare a variable without a ? after its type?
easy
A. The variable cannot hold null values.
B. The variable can hold null values.
C. The variable is automatically initialized to null.
D. The variable must be declared as lateinit.
Solution
Step 1: Understand Kotlin's default type behavior
Kotlin types are non-nullable by default, meaning variables cannot hold null unless specified.
Step 2: Check the effect of missing ?
Without ?, the variable type is non-nullable, so it cannot hold null.
Final Answer:
The variable cannot hold null values. -> Option A
Quick Check:
Non-nullable type = no null allowed [OK]
Hint: No ? means no null allowed [OK]
Common Mistakes:
Thinking variables are nullable by default
Assuming variables initialize to null automatically
Confusing lateinit with nullability
2. Which of the following Kotlin variable declarations is correct to allow null values?
easy
A. val name: String? = null
B. val name: String?
C. val name: String = null
D. val name: String = "null"
Solution
Step 1: Identify nullable type syntax
Adding ? after the type allows the variable to hold null.
Step 2: Check initialization
Nullable variables must be initialized or declared with null explicitly, so val name: String? = null is correct.
Final Answer:
val name: String? = null -> Option A
Quick Check:
Nullable type with ? and initialized to null [OK]
Hint: Use ? and initialize nullable variables [OK]
Common Mistakes:
Declaring nullable without ?
Not initializing nullable variables
Assigning null to non-nullable types
3. What will be the output of this Kotlin code?
fun main() {
val text: String? = null
println(text?.length ?: "No text")
}
medium
A. 0
B. Compilation error
C. null
D. No text
Solution
Step 1: Understand safe call operator usage
The text?.length safely accesses length only if text is not null.
Step 2: Evaluate the Elvis operator
Since text is null, text?.length is null, so the Elvis operator ?: returns "No text".
Final Answer:
No text -> Option D
Quick Check:
Safe call + Elvis operator returns fallback [OK]
Hint: Safe call with Elvis returns fallback if null [OK]
Common Mistakes:
Expecting 0 instead of fallback string
Confusing safe call with normal call
Thinking code causes error due to null
4. Identify the error in this Kotlin code snippet:
fun main() {
val number: Int = null
println(number)
}
medium
A. Variable 'number' is not initialized.
B. Cannot assign null to a non-nullable type Int.
C. Missing semicolon after println statement.
D. Variable 'number' should be declared as var.
Solution
Step 1: Check variable type and assignment
The variable 'number' is declared as non-nullable Int but assigned null, which is not allowed.
Step 2: Understand Kotlin null safety rules
Non-nullable types cannot hold null, so this causes a compilation error.
Final Answer:
Cannot assign null to a non-nullable type Int. -> Option B
Quick Check:
Non-nullable types reject null assignments [OK]
Hint: Non-nullable types cannot be assigned null [OK]
Common Mistakes:
Thinking semicolon is required
Assuming var fixes null assignment
Ignoring Kotlin's null safety
5. You have a nullable variable val input: String?. You want to print its length only if it is not null, otherwise print "Empty input". Which Kotlin code correctly does this?
hard
A. println(input.length ?: "Empty input")
B. println(input!!.length)
C. println(if (input != null) input.length else "Empty input")
D. println(input?.length)
Solution
Step 1: Understand nullable variable usage
Since input can be null, we must check before accessing length.
Step 2: Evaluate each option
println(input.length ?: "Empty input") is invalid because length is Int, not nullable, so Elvis operator on it is wrong. println(if (input != null) input.length else "Empty input") safely checks null and prints length or fallback. println(input!!.length) uses !! which throws exception if null. println(input?.length) prints null if input is null, not the string "Empty input".