12/08/2018, 16:09

Kotlin Tutorial - Bài 2: Biến trong Kotlin, sự khác nhau giữa Java và Kotlin. val và var

Trong bài thứ 2 thì chúng ta sẽ thấy được các biến hoạt động thế nào trong Kotlin, val với var là gì và khi nào sử dụng val, khi nào sử dụng var. Tôi muốn bắt đầu từ đây bởi vì nó sẽ rất hữu ích để hiểu được về cách tạo các field trong các class của chúng ta sau này. Biến trong Kotlin Biến ...

Trong bài thứ 2 thì chúng ta sẽ thấy được các biến hoạt động thế nào trong Kotlin, val với var là gì và khi nào sử dụng val, khi nào sử dụng var. Tôi muốn bắt đầu từ đây bởi vì nó sẽ rất hữu ích để hiểu được về cách tạo các field trong các class của chúng ta sau này.

Biến trong Kotlin

Biến trong Kotlin cũng giống như trong Java cho phép gán giá trị mà sau đó có thể sửa đổi và sử dụng tại các điểm khác nhau trong chương trình của chúng ta, miễn là nó nằm trong phạm vi mà mã được thực thi. Nhưng chúng tôi sẽ tập trung vào sự khác biệt mà chúng tôi tìm thấy với Java.

1. Các biến có thể thay đổi và không thể thay đổi.

Điều này cũng có thể được thực hiện trong Java ( được đánh dấu là final nếu như chúng ta không muốn nó bị sửa đổi). Trong Kotlin thì nó ít rườm rà hơn và được sử dụng nhiều hơn. Các giá trị bất biết trong Kotlin được ưa thích hơn và được dùng bất cứ khi nào có thể. Thực tế là các phần trong chương trình cửa chúng tôi là bất biến đem lại rất nhiều lợi ích, chẳng hạn như có thể dự đoán được nhiều hơn các hành vi và các luông an toàn.

2. Các biến được khai báo sử dụng val hoặc var, biến không thể thay đổi hoặc biến có thể thay đổi.

Một điều thú vị trong Kotlin đó là hầu hết thời gian bạn sẽ không phải đi xác định kiểu dữ liệu của đối tượng mà bạn đang làm việc , miễn là trình biên dịch có thể compiler nó. Vì vậy chúng ta chỉ cần viết var hay val phụ thuộc vào kiểu biến mà chúng ta muốn tạo. Chúng tôi luôn chỉ định 1 kiểu rõ ràng. Ví dụ:

var x = 7
var y : String = "my string"
var z = View(this)

Như bạn thấy, bạn không cần phải sử dụng new để tạo mới 1 instance của đối tượng

3. Kiểu casting được thực hiện tự động

Bất cứ khi nào trình biên dịch có thể phát hiện rằng không có tùy chọn có thể nào khác thì việc casting sẽ được tự động thực hiện.

val z: View = findViewById(R.id.my_view)

if (z is TextView) {
    z.text = "I've been casted!"
}

Bạn có thể thấy rằng tôi không gọi method setText(). Tôi sẽ giải thích nó trong bài tiếp theo.

4. Trong Kotlin, tất cả mọi thứ đều là Object

Không có các kiểu dữ liệu cơ bản, không có void. Nếu không trả về cái gì thì thực tế nó trả về các Unit Object. Phần lớn thời gian nó được bỏ qua nhưng nó vẫn ở đó và bị ẩn đi Vì vậy, tất cả các biến đều là Object:

val x: Int = 20
val y: Double = 21.5
val z: Unit = Unit

5. Các kiểu số đơn giản không thể gán cho các kiểu phức tạp hơn

Ví dụ, Số kiểu integer không thể gán cho biến kiểu long. Nó sẽ không được compile:

val x: Int = 20
val y: Long = x

Bạn cần phải thực hiện casting rõ ràng:

val x: Int = 20
val y: Long = x.toLong()

6. Kết luận

Đây là một vài sự khác biệt nổi bật nhất bạn có thể tìm thấy giữa các biến trong Java và trong Kotlin. Nói chung, các biến trong Kotlin mang lại tính linh hoạt, an toàn hơn ( do quy ước sử dụng val bất cứ khi nào có thể) và code trong sáng và ngắn gọn hơn.

0