Biến (Variable) trong Kotlin - val và var
1. Giới thiệu về Biến trong Kotlin
Trong Kotlin, biến là một vùng nhớ để lưu trữ dữ liệu. Khác với Python, Kotlin có hai cách khai báo biến:
val(value) - Biến không thay đổi (immutable), giốngfinaltrong Javavar(variable) - Biến có thể thay đổi (mutable)
2. Khai báo biến với val (Immutable)
val được sử dụng khi bạn muốn tạo một biến mà giá trị của nó không thay đổi sau khi được gán.
val year = 2025
val message = "Hello Kotlin"
val pi = 3.14159
// Lỗi: không thể gán lại giá trị cho val
// year = 2026 // Compile error!Lưu ý quan trọng:
- Kotlin khuyến khích sử dụng
valthay vìvarđể code an toàn hơn valtương tự nhưconsttrong JavaScript hoặcfinaltrong Java
3. Khai báo biến với var (Mutable)
var được sử dụng khi giá trị của biến cần thay đổi trong quá trình chạy chương trình.
var count = 0
count = 1 // OK
count = 2 // OK
var name = "Alice"
name = "Bob" // OK4. Khai báo kiểu dữ liệu tường minh
Kotlin có khả năng tự suy luận kiểu dữ liệu (type inference), nhưng bạn cũng có thể khai báo kiểu tường minh:
val age: Int = 25
val name: String = "Kotlin"
val height: Double = 1.75
val isStudent: Boolean = trueHoặc để Kotlin tự suy luận:
val age = 25 // Int
val name = "Kotlin" // String
val height = 1.75 // Double
val isStudent = true // Boolean5. Quy tắc đặt tên biến
Giống như Python, Kotlin cũng có quy tắc đặt tên biến:
- Tên biến phải bắt đầu bằng chữ cái hoặc dấu gạch dưới
_ - Không được bắt đầu bằng số
- Có thể chứa chữ cái, số và dấu gạch dưới
- Phân biệt chữ hoa, chữ thường
- Không được dùng từ khóa của Kotlin
Quy ước đặt tên (Convention):
- Sử dụng camelCase cho tên biến:
firstName,totalAmount,isValid - Sử dụng UPPER_SNAKE_CASE cho hằng số:
MAX_VALUE,PI
// Hợp lệ
val firstName = "John"
val age1 = 25
val _temp = 100
val totalAmount = 1000
// Không hợp lệ
// val 1age = 25 // Bắt đầu bằng số
// val my-name = "John" // Có dấu gạch ngang
// val class = "A" // Từ khóa của Kotlin6. Khởi tạo biến muộn (Late Initialization)
Đôi khi bạn muốn khai báo biến nhưng chưa gán giá trị ngay. Kotlin yêu cầu phải khởi tạo biến hoặc sử dụng lateinit:
// Cách 1: Khởi tạo với giá trị mặc định
var name: String = ""
// Cách 2: Sử dụng lateinit (chỉ dùng với var)
lateinit var userName: String
fun initialize() {
userName = "Alice"
}7. Hằng số (Constants)
Để khai báo hằng số thực sự (compile-time constant), sử dụng const val:
const val PI = 3.14159
const val MAX_USERS = 100
const val APP_NAME = "Bumbii Academy"
// const val chỉ dùng được với kiểu primitive và String
// const val chỉ khai báo ở top-level hoặc trong object8. So sánh val/var với Python
| Kotlin | Python | Mô tả |
|---|---|---|
val x = 10 | Không có tương đương trực tiếp | Immutable variable |
var x = 10 | x = 10 | Mutable variable |
const val X = 10 | X = 10 (convention) | Constant |
9. Ví dụ thực tế
fun main() {
// Thông tin sinh viên
val studentId = "SV001" // Không thay đổi
var studentName = "Nguyễn Văn A" // Có thể thay đổi
var score = 8.5 // Có thể thay đổi
println("Mã SV: $studentId")
println("Tên: $studentName")
println("Điểm: $score")
// Cập nhật điểm
score = 9.0
println("Điểm mới: $score")
// studentId = "SV002" // Lỗi: không thể thay đổi val
}10. Best Practices
- Ưu tiên sử dụng
valthay vìvarkhi có thể - Khai báo kiểu tường minh khi cần code rõ ràng hơn
- Sử dụng
const valcho các hằng số compile-time - Đặt tên có ý nghĩa và tuân theo quy ước camelCase
- Tránh sử dụng
lateinitnếu có thể khởi tạo ngay
📝 Tóm tắt
val: Biến không thay đổi (immutable) - khuyến khích sử dụngvar: Biến có thể thay đổi (mutable)const val: Hằng số compile-timelateinit var: Khởi tạo muộn- Kotlin khuyến khích immutability để code an toàn hơn
Last updated on