If you’re new to Kotlin, you might be wondering what is need of const val when we have val? 🤔
Both are the same, Right? 🤔
Then this article is for you.
- The main difference between val and const val is that val can be assigned a value at runtime, whereas const val must be assigned a value at compile time and cannot be changed afterward(their values are hardcoded).
/*const val eg.*/const val baseUrl = "https://rickandmortyapi.com/api"/*val eg.*/val db = FirebaseDatabase.getInstance()/* const val eg. */ const val baseUrl = "https://rickandmortyapi.com/api" /* val eg. */ val db = FirebaseDatabase.getInstance()/* const val eg. */ const val baseUrl = "https://rickandmortyapi.com/api" /* val eg. */ val db = FirebaseDatabase.getInstance()
Enter fullscreen mode Exit fullscreen mode
- const val can only be declared at the top level of a file or inside an object declaration, whereas val can be declared anywhere within a function, class or object.
Example of const val deceleration at the top level of file
package com.example.admindashboardimport android.content.Intentimport android.os.Bundleimport androidx.appcompat.app.AppCompatActivityimport com.example.admindashboard.databinding.ActivityMainBindingimport com.example.admindashboard.ui.AddBooksimport com.example.admindashboard.ui.ControlPanelActivityimport com.example.admindashboard.ui.NotifficationActivityconst val message = "Hello " // correctclass MainActivity : AppCompatActivity() {const val message2 = "hello again" // incorrect// other codevar binding: ActivityMainBinding? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding!!.root)}}package com.example.admindashboard import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.example.admindashboard.databinding.ActivityMainBinding import com.example.admindashboard.ui.AddBooks import com.example.admindashboard.ui.ControlPanelActivity import com.example.admindashboard.ui.NotifficationActivity const val message = "Hello " // correct class MainActivity : AppCompatActivity() { const val message2 = "hello again" // incorrect // other code var binding: ActivityMainBinding? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding!!.root) } }package com.example.admindashboard import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.example.admindashboard.databinding.ActivityMainBinding import com.example.admindashboard.ui.AddBooks import com.example.admindashboard.ui.ControlPanelActivity import com.example.admindashboard.ui.NotifficationActivity const val message = "Hello " // correct class MainActivity : AppCompatActivity() { const val message2 = "hello again" // incorrect // other code var binding: ActivityMainBinding? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding!!.root) } }
Enter fullscreen mode Exit fullscreen mode
Example of const val declaration inside object
package com.example.admindashboard.utilsimport com.google.firebase.database.FirebaseDatabaseimport com.google.firebase.storage.FirebaseStorageobject FirebaseUtils {const val bookNodeName = "books" // const val declarationval firebaseDatabase = FirebaseDatabase.getInstance()var pyqRef = firebaseDatabase.getReference("pyq")}package com.example.admindashboard.utils import com.google.firebase.database.FirebaseDatabase import com.google.firebase.storage.FirebaseStorage object FirebaseUtils { const val bookNodeName = "books" // const val declaration val firebaseDatabase = FirebaseDatabase.getInstance() var pyqRef = firebaseDatabase.getReference("pyq") }package com.example.admindashboard.utils import com.google.firebase.database.FirebaseDatabase import com.google.firebase.storage.FirebaseStorage object FirebaseUtils { const val bookNodeName = "books" // const val declaration val firebaseDatabase = FirebaseDatabase.getInstance() var pyqRef = firebaseDatabase.getReference("pyq") }
Enter fullscreen mode Exit fullscreen mode
Thank you for reading this article. If you found this helpful and interesting, like it.
If I got something wrong, mention it in the comments. I would love to improve.
Connect with me on GitHub and LinkedIn
原文链接:What is the difference between val and const val in kotlin?
暂无评论内容