Bird
Raised Fist0
Kotlinprogramming~5 mins

Object declaration syntax in Kotlin - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Object declaration syntax
O(n)
Understanding Time Complexity

Let's see how the time it takes to run code changes when we use Kotlin's object declaration syntax.

We want to know how the program's work grows as we create or use objects this way.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

object Logger {
    fun log(message: String) {
        println(message)
    }
}

fun main(n: Int) {
    for (i in 1..n) {
        Logger.log("Message $i")
    }
}

This code defines a single object Logger and calls its log function n times in a loop.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Calling Logger.log inside a loop.
  • How many times: Exactly n times, once per loop iteration.
How Execution Grows With Input

Each time we increase n, the number of log calls grows the same amount.

Input Size (n)Approx. Operations
1010 log calls
100100 log calls
10001000 log calls

Pattern observation: The work grows directly with n, so doubling n doubles the work.

Final Time Complexity

Time Complexity: O(n)

This means the time to run grows in a straight line with the number of times we call the log function.

Common Mistake

[X] Wrong: "Since Logger is a single object, calling its method many times is constant time."

[OK] Correct: Even though the object is created once, each method call still takes time, so more calls mean more total time.

Interview Connect

Understanding how repeated calls to a single object affect time helps you explain performance clearly and confidently in interviews.

Self-Check

"What if we created a new Logger object inside the loop each time instead of using the object declaration? How would the time complexity change?"

Practice

(1/5)
1. What does the object keyword in Kotlin do?
easy
A. Creates a function that returns an object
B. Defines a class that can be instantiated multiple times
C. Declares a variable of type Object
D. Creates a single instance with properties and functions

Solution

  1. Step 1: Understand the object keyword purpose

    The object keyword creates a singleton, meaning one single instance with properties and functions.
  2. Step 2: Compare with other options

    Classes can be instantiated multiple times, variables don't define singletons, and functions returning objects are different concepts.
  3. Final Answer:

    Creates a single instance with properties and functions -> Option D
  4. Quick Check:

    object keyword = single instance [OK]
Hint: Remember: object = one single instance [OK]
Common Mistakes:
  • Confusing object with class
  • Thinking object creates multiple instances
  • Mixing object with variable declaration
2. Which of the following is the correct syntax to declare an object named Config in Kotlin?
easy
A. object Config { }
B. val Config = object { }
C. class Config { }
D. fun Config() { }

Solution

  1. Step 1: Identify the object declaration syntax

    The correct syntax to declare a singleton object is using the object keyword followed by the name and curly braces.
  2. Step 2: Check other options

    class Config { } declares a class, B declares an anonymous object assigned to a val, and D declares a function, so they are incorrect.
  3. Final Answer:

    object Config { } -> Option A
  4. Quick Check:

    object keyword + name + braces = correct syntax [OK]
Hint: Use 'object Name { }' to declare singleton objects [OK]
Common Mistakes:
  • Using class instead of object
  • Assigning anonymous object to val instead
  • Using function syntax by mistake
3. What is the output of this Kotlin code?
object Logger {
    fun log(msg: String) = println("Log: $msg")
}

fun main() {
    Logger.log("Start")
}
medium
A. Log: Start
B. Start
C. Logger.log(Start)
D. Compilation error

Solution

  1. Step 1: Understand object usage

    The object Logger has a function log that prints "Log: " plus the message.
  2. Step 2: Trace the main function call

    Calling Logger.log("Start") prints "Log: Start" to the console.
  3. Final Answer:

    Log: Start -> Option A
  4. Quick Check:

    Logger.log("Start") prints "Log: Start" [OK]
Hint: Object functions called by object name print their output [OK]
Common Mistakes:
  • Expecting just the message without prefix
  • Thinking it prints the function call text
  • Assuming compilation error due to object usage
4. Identify the error in this Kotlin object declaration:
object Data {
    var count: Int
    fun increment() {
        count++
    }
}
medium
A. Cannot use 'var' inside object
B. Missing initialization for 'count' property
C. Function 'increment' should return Int
D. Object cannot have properties

Solution

  1. Step 1: Check property declaration

    The property 'count' is declared but not initialized or marked as abstract, which is invalid in objects.
  2. Step 2: Validate other options

    Objects can have vars, functions can be Unit-returning, and objects can have properties, so other options are incorrect.
  3. Final Answer:

    Missing initialization for 'count' property -> Option B
  4. Quick Check:

    Properties in objects must be initialized [OK]
Hint: Always initialize properties in objects or use lateinit [OK]
Common Mistakes:
  • Forgetting to initialize properties
  • Thinking vars are disallowed in objects
  • Expecting functions to always return a value
5. You want to create a singleton object Cache that stores key-value pairs and provides a function getValue(key: String): String?. Which of the following is the best Kotlin object declaration?
hard
A. fun Cache() = mutableMapOf() fun getValue(key: String) = Cache()[key]
B. class Cache { val map = mutableMapOf() fun getValue(key: String) = map[key] }
C. object Cache { private val map = mutableMapOf() fun getValue(key: String) = map[key] }
D. val Cache = mapOf() fun getValue(key: String) = Cache[key]

Solution

  1. Step 1: Identify singleton pattern

    Using object creates a singleton Cache with a private mutable map and a function to get values.
  2. Step 2: Compare other options

    class Cache { val map = mutableMapOf() fun getValue(key: String) = map[key] } is a class needing instances, C is a function returning a new map each time, D uses an immutable map and separate function, not encapsulated.
  3. Final Answer:

    object Cache { private val map = mutableMapOf() fun getValue(key: String) = map[key] } -> Option C
  4. Quick Check:

    Singleton object with private mutable map = object Cache { private val map = mutableMapOf() fun getValue(key: String) = map[key] } [OK]
Hint: Use object with private mutable map for singleton cache [OK]
Common Mistakes:
  • Using class instead of object for singleton
  • Returning new map each call instead of storing
  • Using immutable map when mutation is needed
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