An toàn với null là gì
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 12 trên 93.
Trong nhiều ngôn ngữ lập trình, một trong những lỗi phổ biến nhất là cố truy cập vào thứ không tồn tại: một giá trị null. Điều này xảy ra khi một biến chứa “không có gì” thay vì dữ liệu thực tế.
Hãy tưởng tượng bạn hỏi tên người dùng nhưng họ chưa cung cấp tên. Nếu code của bạn cố sử dụng tên trống đó mà không kiểm tra trước, chương trình sẽ gặp sự cố. Lỗi này phổ biến đến mức được gọi là “sai lầm tỷ đô”.
Giải pháp của Kotlin: an toàn với giá trị null
Kotlin được thiết kế để loại bỏ những lỗi sập này. Theo mặc định, biến trong Kotlin không thể chứa giá trị null:
fun main() {
var name: String = "Alice"
name = null // Lỗi! Không thể biên dịch
}Trình biên dịch phát hiện vấn đề này trước cả khi code của bạn chạy. Đó là lý do Kotlin an toàn với null: bản thân ngôn ngữ ngăn bạn vô tình dùng null ở những nơi không phù hợp.
Trong các bài học sắp tới, bạn sẽ tìm hiểu cách Kotlin cho phép bạn làm việc với các giá trị có thể là null khi bạn thực sự cần dùng chúng, đồng thời vẫn giúp code của bạn an toàn, tránh bị lỗi.
Thử thách
DễKhai báo hai biến không thể nhận giá trị null để minh họa tính an toàn với null của Kotlin:
- Một biến
Stringcó tênusernamevới giá trị"Kotlin" - Một biến
Intcó tênscorevới giá trị100
Sau đó, in hai giá trị trên các dòng riêng biệt bằng println().
Hãy nhớ: Trong Kotlin, các kiểu thông thường (không thể nhận giá trị null) không thể chứa giá trị
null. Trình biên dịch đảm bảo các biến của bạn luôn chứa dữ liệu hợp lệ.
Tự làm thử
fun main() {
// TODO: Viết code của bạn bên dưới
// Khai báo một biến (variable) String không thể nhận giá trị null, tên là 'username', có giá trị "Kotlin"
// Khai báo một biến Int không thể nhận giá trị null, tên là 'score', có giá trị 100
// In cả hai giá trị trên hai dòng riêng bằng println()
}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
4Toán tử phần 1
Toán tử số họcToán tử moduloPhép gán kết hợpToán tử so sánhÔn tập: phép tính đơn giản7Nhập xuất cơ bản
Hàm PrintlnMẫu chuỗiĐầu vào ReadLineChuyển đổi kiểu dữ liệuÔn tập: Số năm đến khi nghỉ hưuÔn tập: Đúng hay sai10Hàm
Khai báo hàmTham số và đối sốGiá trị trả vềĐối số có tênGiá trị mặc địnhHàm chỉ gồm một biểu thứcÔn tập: hàm SigmaÔn tập: hàm kiểm tra hợp lệ3Tính có thể null
An toàn với null là gìKiểu có thể nullToán tử gọi an toànToán tử ElvisCơ bản về thử thách hàmKhẳng định không nullÔn tập: truy cập an toàn6Ra quyết định
Câu lệnh ifCâu lệnh if-elseIf dưới dạng biểu thứcBiểu thức whenWhen với khoảng giá trịÔn tập: máy tính đơn giản9Vòng lặp
Vòng lặp forVòng lặp whileVòng lặp do-whileBreakContinuePhạm vi trong vòng lặpVòng lặp lồng nhauÔn tập: giai thừaÔn tập: đầu vào động12Cơ bản về danh sách
List và MutableListTruy cập phần tửChỉnh sửa danh sáchPhương thức của ListPair và TripleÔn tập: danh sách sản phẩmÔn tập: danh sách đảo ngược15Theo dõi chi tiêu hằng ngày
Tổng quan dự ánThoát khỏi chương trìnhTự luyện tập: Playground Kotlin