🚀 Enrollments Open for 1:1 Mentorship Scheduled as per your availability 💚Book Now
KotlinIntermediate4 min
Difference Between const val and val?

Recommended Resources

Answer

Both const val and val are used to declare immutable (read-only) properties in Kotlin, but they differ in when and how their values are determined.

const val - Compile-Time Constants

const val declares compile-time constants whose values must be known during compilation.

Requirements:

  • Must be declared at top-level, inside an object, or in a companion object
  • Can only be primitive types (Int, Double, Boolean) or String
  • Cannot be assigned from function calls or complex expressions
  • Value is inlined into bytecode at compile-time for better performance

const val API_URL = "https://api.example.com" // Valid const val MAX_RETRY = 3 // Valid const val TIME = System.currentTimeMillis() // Invalid - function call

val - Runtime Constants

val declares runtime constants that are initialized when the code executes.

Characteristics:

  • Can be declared anywhere (top-level, inside classes, functions)
  • Supports any data type and complex expressions
  • Can use function calls and custom getters
  • Value is stored in memory and accessed at runtime

val currentTime = System.currentTimeMillis() // Valid - runtime initialization val userName = getCurrentUser() // Valid - function call val config: String get() = if (isDev) "dev" else "prod" // Valid - custom getter

When to Use Which?

Use const val for:

  • Fixed configuration values, API URLs, constants
  • Values that never change and are known beforehand
  • Better performance due to compile-time inlining[5]

Use val for:

  • Values determined at runtime (timestamps, user input)
  • Function results or complex calculations
  • Any scenario requiring runtime flexibility

Key Difference

The main distinction is timing: const val is evaluated at compile-time and inlined for performance, while val is evaluated at runtime and stored in memory.

Want to go deeper?

Read our full guides and blog posts on Kotlin and related Android topics.

Want to master these concepts?

Join our live cohorts and build production-ready Android apps.

1:1 Mentorship

Get personalized guidance from a Google Developer Expert. Accelerate your career with dedicated support.

Personalized Learning Path
Mock Interviews & Feedback
Resume & Career Guidance

Limited slots available each month

Share & Help Others

Help fellow developers prepare for interviews

Sharing helps the Android community grow 💚