Menu
CoddyTech

Kiểu có thể null

Thuộc phần Kiến thức nền tảng trong hành trình Kotlin của Coddy. Bài học 13 trên 93.

Đôi khi bạn thực sự cần một biến có thể chứa giá trị “không có gì”. Ví dụ: người dùng có thể không có tên đệm hoặc kết quả tìm kiếm có thể không có kết quả nào. Kotlin cho phép điều này thông qua kiểu dữ liệu có thể nhận giá trị null.

Để cho phép một kiểu nhận giá trị null, hãy thêm ? sau tên kiểu:

fun main() {
    var middleName: String? = "Marie"
    middleName = null  // Giờ có thể gán null!
    
    val age: Int? = null  // Có thể chứa giá trị Int hoặc null
}

? cho Kotlin biết: "Biến này có thể là null, vì vậy hãy cẩn thận khi dùng nó." Nếu không có ?, kiểu dữ liệu không thể nhận giá trị null.

Quan trọng: Kiểu dữ liệu cho phép giá trị null và kiểu dữ liệu không cho phép giá trị null khác nhau. Bạn không thể gán trực tiếp một giá trị có thể là null cho một biến không thể là null:

fun main() {
    val nullableName: String? = "Alice"
    val regularName: String = nullableName  // Lỗi!
}

Sự phân biệt này là có chủ đích. Nó buộc bạn phải xử lý khả năng giá trị là null trước khi sử dụng giá trị đó. Trong các bài học tiếp theo, bạn sẽ tìm hiểu những cách an toàn mà Kotlin cung cấp để làm việc với các giá trị có thể null.

challenge icon

Thử thách

Dễ

Khai báo các biến có thể nhận giá trị null sau:

  • Một biến String có thể nhận giá trị null, tên là nickname, với giá trị "Shadow"
  • Một biến Int có thể nhận giá trị null, tên là age, với giá trị null
  • Một biến Double có thể nhận giá trị null, tên là balance, với giá trị 99.5

Sau đó, in ra cả ba giá trị trên các dòng riêng biệt bằng println().

Nhớ đặt ? sau tên kiểu dữ liệu để kiểu đó có thể nhận giá trị null. Khi in ra giá trị null, bạn sẽ thấy từ null.

Tự làm thử

fun main() {
    // TODO: Khai báo các biến (variable) có thể nhận giá trị null sau:
    // 1. Một biến String có thể nhận giá trị null, tên là 'nickname', với giá trị "Shadow"
    // 2. Một biến Int có thể nhận giá trị null, tên là 'age', với giá trị null
    // 3. Một biến Double có thể nhận giá trị null, tên là 'balance', với giá trị 99.5
    
    // Sau đó, in cả ba giá trị ra, mỗi giá trị trên một dòng riêng
    
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Playground Kotlin