Biến và Kiểu dữ liệu trong Kotlin
Có hai loại biến trong Kotlin, mutable(có thể thay đổi) và immutable(không thay đổi). Một biến immutable là một biến có giá trị không thể thay đổi, còn được gọi là biến không thể thay đổi hoặc chỉ đọc. Mặt khác, giá trị của biến mutable có thể được thay đổi.
I. Immutable variable: val keyword
Immutable được khai báo bằng cách sử dụng từ khóa val
trong Kotlin. Trong ví dụ này, chúng ta khai báo một biến myName
bất biến bằng cách sử dụng từ khóa val
và sau đó hiển thị giá trị của nó.
/** * created by freetuts.net */ package beginnersbook fun main(args : Array<String>){ /** * This is an immutable variable * also called unchangeable variable * or read-only variable. */ val myName = "Chaitanya" println("My Name is: "+myName) }
OUTPUT
Bài viết này được đăng tại [free tuts .net]
Điều gì xảy ra khi chúng ta cố gắng thay đổi giá trị của một biến Immutable?
Nếu chúng ta cố gắng thay đổi giá trị của một biến Immutable , chúng ta sẽ gặp lỗi biên dịch, giống như chúng ta nhận được trong ví dụ sau.
/** * created by freetuts.net */ package beginnersbook fun main(args : Array<String>){ /** * This is an immutable variable * also called unchangeable variable * or read-only variable. */ val myName = "Chaitanya" myName="Chaitanya Singh" println("My Name is: "+myName) }
OUTPUT:
Error:(13, 5) Kotlin: Val cannot be reassigned
II. Mutable variable: var keyword
Không giống như biến bất biến (Immutable), chúng ta có thể thay đổi giá trị của biến có thể thay đổi. Trong kotlin, chúng ta sử dụng từ khóa var
để khai báo một biến mutable. Hãy lấy một ví dụ để hiểu điều này.
Trong ví dụ này, chúng ta khai báo một biến mutable bằng cách sử dụng từ khóa var
, để chứng minh rằng chúng ta có thể thay đổi giá trị của nó, chúng ta gán một giá trị khác cho biến myName.
package beginnersbook fun main(args : Array<String>){ /** * This is an mutable variable * we can change the value of this * variable */ var myName = "Chaitanya" myName="Chaitanya Singh" println("My Name is: "+myName) }
OUTPUT
III. Biến là gì?
Biến là một tên, được đặt cho một vị trí trong bộ nhớ có thể chứa dữ liệu. Ví dụ, khi chúng ta khai báo biến như thế này:
var dogName = "Hachiko"
Dữ liệu "Hachiko" được lưu trữ trong bộ nhớ tại một vị trí cụ thể, được đặt tên là dogName.
Ở đây var là một từ khóa được sử dụng để khai báo một biến, dogName là một định danh (tên của biến), Hachiko là data (giá trị của biến) và kiểu dữ liệu của biến là String (chúng ta sẽ tìm hiểu về kiểu dữ liệu là gì sau).
Đọc thêm: Kotlin - keywords và định danh
IV. Kiểu suy diễn
Như chúng ta đã đề cập trước đó, chúng ta có thể khai báo và khởi tạo biến trong một câu lệnh như sau:
var dogName="Hachiko"
Trong tuyên bố trên, chúng ta chưa chỉ định kiểu dữ liệu cho biến, kotlin biết rằng biến dogName là một chuỗi. Trình biên dịch có thể hiểu loại biến bằng cách xem các giá trị.
Tuy nhiên nếu bạn muốn đề cập rõ ràng về loại biến thì bạn có thể làm như thế này:
var dogName: String="Hachiko"
Ở đây chúng ta có thể thấy một cách rõ ràng về việc biến dogName có kiểu dữ liệu là dạng chuỗi(String).
Khai báo trước và khởi tạo sau:
Chúng ta có thể khai báo biến trước và sau đó chúng ta có thể khởi tạo nó sau trong chương trình. Điểm quan trọng cần lưu ý ở đây là chúng ta phải làm như thế này, bạn phải xác định loại biến trong khi khai báo.
//It is mandatory to specify the type in this case var website: String dogName = "Hachiko"
V. Kiểu dữ liệu trong Kotlin
Kotlin Data Types
- Numbers – Byte, Short, Int, Long, Float, Double
- Boolean – True, false
- Characters
- Arrays
- Strings
Number
Chúng ta có một số loại dữ liệu để thể hiện các số trong Kotlin.
1 - Byte
Phạm vi của kiểu dữ liệu Byte là -128 đến 127. Byte được sử dụng để biểu thị các giá trị nguyên nhỏ hơn.
fun main(args : Array) { val num: Byte = 99 println("$num") }
OUTPUT: 99
Bạn phải xác định được phạm vi của loại dữ liệu để tránh lỗi. Ví dụ, đoạn code sau sẽ tạo ra lỗi vì giá trị được gán cho biến kiểu byte không nằm trong phạm vi.
fun main(args : Array) { //Range is -128 to 127 val num: Byte = 300 println("$num") }
OUTPUT
error
Chúng ta cũng có thể biết giá trị tối thiểu và tối đa của một loại dữ liệu như thế này:
fun main(args : Array<String>){ var bigByte: Byte = Byte.MAX_VALUE var smallByte: Byte = Byte.MIN_VALUE println("Biggest Byte value is: " + bigByte) /** * I can use String interpolation and put * the variable inside quotes to display its * value */ println("Smallest Byte value is: $smallByte") }
OUTPUT:
2 - Short
Phạm vi của kiểu dữ liệu Short là -32768 đến 32767.
fun main(args : Array) { val num: Short = 29999 println("$num") }
OUTPUT:
29999
Bạn có thể tự hỏi khi chúng tôi có phạm vi lớn hơn trong kiểu dữ liệu ngắn, tại sao chúng ta sử dụng kiểu dữ liệu Byte?
Điều này là để tiết kiệm bộ nhớ. Kiểu dữ liệu Short chứa nhiều bộ nhớ hơn so với loại dữ liệu Byte vì vậy nếu bạn chắc chắn rằng giá trị sẽ nằm trong giới hạn từ -128 đến 127 thì loại dữ liệu Byte sẽ là lựa chọn tốt hơn từ phối cảnh bộ nhớ.
3 - Int
Phạm vi của kiểu dữ liệu Int là -231 đến 231-1
fun main(args : Array) { val num: Int = 123456 println("$num") }
OUTPUT:
123456
Lưu ý: Nếu bạn không chỉ định rõ ràng loại biến thì trình biên dịch sẽ coi biến đó là Int, nếu giá trị nằm trong khoảng từ -231 đến 231-1
4 - Long
Phạm vi của kiểu dữ liệu dài là -263 đến 263-1
fun main(args : Array) { val num: Long = 12345678 println("$num") }
OUTPUT:
12346678
Lưu ý: Nếu bạn không chỉ định rõ ràng loại biến thì trình biên dịch sẽ coi biến đó là Long, nếu giá trị nằm ngoài phạm vi từ -231 đến 231-1 nhưng nằm trong phạm vi từ -263 đến 263-1
5 - Double
fun main(args : Array) { // all floating numbers are double by default // unless you suffix the value with F letter val num = 101.99 println("$num") }
OUTPUT
101.99
6 - Float
fun main(args : Array) { // This is a float data type as we have suffixed // the value with letter 'F' val num = 101.99F println("$num") }
OUTPUT:
101.99
7 - Boolean
Giá trị của biến boolean là đúng hoặc sai.
fun main(args : Array) { val boolValue = false println("$boolValue") }
OUTPUT:
false
8 - Char
Tất cả các bảng chữ cái tiếng Anh (chữ thường hoặc chữ hoa) được bao gồm trong kiểu dữ liệu Char. Bạn không thể gán số cho biến kiểu dữ liệu Char.
fun main(args : Array) { val ch = 'A' println("$ch") val ch2: Char ch2 = 'Z' println("$ch2") }
OUTPUT:
A Z