Skip to Content
Kotlin📘 Ngôn ngữ KotlinBiến (Variable) - val và var

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ống final trong Java
  • var (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 val thay vì var để code an toàn hơn
  • val tương tự như const trong JavaScript hoặc final trong 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" // OK

4. 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 = true

Hoặc để Kotlin tự suy luận:

val age = 25 // Int val name = "Kotlin" // String val height = 1.75 // Double val isStudent = true // Boolean

5. Quy tắc đặt tên biến

Giống như Python, Kotlin cũng có quy tắc đặt tên biến:

  1. Tên biến phải bắt đầu bằng chữ cái hoặc dấu gạch dưới _
  2. Không được bắt đầu bằng số
  3. Có thể chứa chữ cái, số và dấu gạch dưới
  4. Phân biệt chữ hoa, chữ thường
  5. 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 Kotlin

6. 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 object

8. So sánh val/var với Python

KotlinPythonMô tả
val x = 10Không có tương đương trực tiếpImmutable variable
var x = 10x = 10Mutable variable
const val X = 10X = 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

  1. Ưu tiên sử dụng val thay vì var khi có thể
  2. Khai báo kiểu tường minh khi cần code rõ ràng hơn
  3. Sử dụng const val cho các hằng số compile-time
  4. Đặt tên có ý nghĩa và tuân theo quy ước camelCase
  5. Tránh sử dụng lateinit nế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ụng
  • var: Biến có thể thay đổi (mutable)
  • const val: Hằng số compile-time
  • lateinit var: Khởi tạo muộn
  • Kotlin khuyến khích immutability để code an toàn hơn
Last updated on