Bird
Raised Fist0
Kotlinprogramming~10 mins

Properties with val and var in Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a read-only property.

Kotlin
class Person {
    val name: String = [1]
}
Drag options to blanks, or click blank then click option'
Aval
Bvar
Cfun
D"Alice"
Attempts:
3 left
💡 Hint
Common Mistakes
Using var instead of a value for assignment.
Forgetting to use quotes for string values.
2fill in blank
medium

Complete the code to declare a mutable property.

Kotlin
class Car {
    var speed: Int = [1]
}
Drag options to blanks, or click blank then click option'
A0
B"fast"
Cval
Dfun
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning a string to an integer property.
Using val instead of var for mutable properties.
3fill in blank
hard

Fix the error in the property declaration to make it mutable.

Kotlin
class Book {
    [1] title: String = "Kotlin Guide"
}
Drag options to blanks, or click blank then click option'
Afun
Bvar
Cval
Dconst
Attempts:
3 left
💡 Hint
Common Mistakes
Using val which makes the property read-only.
Using fun which is for functions, not properties.
4fill in blank
hard

Fill both blanks to declare a read-only property with a custom getter.

Kotlin
class Circle(val radius: Double) {
    val area: Double
        get() = [1] * radius [2] radius
}
Drag options to blanks, or click blank then click option'
AMath.PI
B*
C+
Dval
Attempts:
3 left
💡 Hint
Common Mistakes
Using addition instead of multiplication for squaring.
Using val inside the getter instead of a value.
5fill in blank
hard

Fill all three blanks to declare a mutable property with a backing field and custom setter.

Kotlin
class Temperature {
    var celsius: Double = [1]
        set(value) {
            field = if (value [2] [3]273.15) [3]273.15 else value
        }
}
Drag options to blanks, or click blank then click option'
A0.0
B<
C+
D-
Attempts:
3 left
💡 Hint
Common Mistakes
Using addition instead of subtraction for negative numbers.
Not using the backing field field inside the setter.

Practice

(1/5)
1. What is the main difference between val and var properties in Kotlin?
easy
A. val can be changed anytime, var is read-only after initialization.
B. val is read-only after initialization, var can be changed anytime.
C. val and var both can be changed anytime.
D. val and var are exactly the same.

Solution

  1. Step 1: Understand val behavior

    val properties are assigned once and cannot be reassigned later.
  2. Step 2: Understand var behavior

    var properties can be reassigned multiple times after initialization.
  3. Final Answer:

    val is read-only after initialization, var can be changed anytime. -> Option B
  4. Quick Check:

    val = read-only, var = mutable [OK]
Hint: Remember: val = fixed, var = variable [OK]
Common Mistakes:
  • Confusing val as mutable
  • Thinking var is read-only
  • Believing val and var behave the same
2. Which of the following is the correct way to declare a mutable property named age of type Int in Kotlin?
easy
A. var age: Int = 25
B. val age: Int = 25
C. val age = 25
D. var age: Int

Solution

  1. Step 1: Identify mutable property keyword

    Mutable properties use var keyword.
  2. Step 2: Check initialization

    Property must be initialized or declared nullable; here age is initialized with 25.
  3. Final Answer:

    var age: Int = 25 -> Option A
  4. Quick Check:

    Mutable property uses var [OK]
Hint: Use var for changeable properties [OK]
Common Mistakes:
  • Using val for mutable property
  • Not initializing non-nullable property
  • Omitting type without initialization
3. What will be the output of the following Kotlin code?
class Person {
    val name = "Anna"
    var age = 30
}

fun main() {
    val p = Person()
    println(p.name)
    p.age = 31
    println(p.age)
}
medium
A. Anna 30
B. Anna null
C. Error: Cannot assign to val property
D. Anna 31

Solution

  1. Step 1: Check val name usage

    name is a val, so it prints "Anna" and cannot be changed.
  2. Step 2: Check var age reassignment

    age is a var, so it can be changed from 30 to 31 before printing.
  3. Final Answer:

    Anna 31 -> Option D
  4. Quick Check:

    val prints original, var prints updated [OK]
Hint: val prints original, var can be updated [OK]
Common Mistakes:
  • Expecting error on changing var
  • Thinking val can be reassigned
  • Confusing printed values
4. Identify the error in the following Kotlin code:
class Car {
    val model: String
    var year: Int

    init {
        model = "Tesla"
        year = 2020
    }
}

fun main() {
    val car = Car()
    car.model = "BMW"
    println(car.model)
}
medium
A. Cannot assign a new value to val property 'model'.
B. Property 'year' is not initialized.
C. Missing constructor parameters.
D. No error, code runs fine.

Solution

  1. Step 1: Check val model reassignment

    model is declared as val, so it cannot be reassigned after initialization.
  2. Step 2: Verify property initialization

    model and year are both initialized in init, so no initialization error.
  3. Final Answer:

    Cannot assign a new value to val property 'model'. -> Option A
  4. Quick Check:

    val properties cannot be reassigned [OK]
Hint: val properties cannot be changed after init [OK]
Common Mistakes:
  • Trying to reassign val property
  • Ignoring uninitialized var warnings
  • Assuming val can be reassigned
5. You want to create a Kotlin class Book where the title should never change after creation, but the price can be updated. Which declaration is correct?
hard
A. class Book(val title: String, val price: Double)
B. class Book(var title: String, var price: Double)
C. class Book(val title: String, var price: Double)
D. class Book(var title: String, val price: Double)

Solution

  1. Step 1: Determine immutability for title

    title should not change, so declare it with val.
  2. Step 2: Determine mutability for price

    price can change, so declare it with var.
  3. Final Answer:

    class Book(val title: String, var price: Double) -> Option C
  4. Quick Check:

    Immutable title = val, mutable price = var [OK]
Hint: Use val for fixed, var for changeable properties [OK]
Common Mistakes:
  • Using var for title which should be fixed
  • Using val for price which should be changeable
  • Mixing up val and var keywords
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard