Xin chào, mình là Dương Vũ. Hôm nay mình sẽ trình bày về các kiểu dữ liệu cơ bản trong Kotlin. Sau bài này các bạn có thể biết cách khai báo biến, hằng số. Đồng thời các bạn cũng có kiến thức về các kiểu dữ liệu cơ bản trong Kotlin (mà thực ra là trong mọi ngôn ngữ lập trình). Các bạn cũng có kiến thức về mảng, danh sách, cách thức làm việc với chúng trong Kotlin. Yeah, bắt đầu nhé!
[toc]
Biến và hằng số
Biến
Trong Kotlin, chúng ta dùng từ khoá var để khai báo 1 biến và dùng từ khoá val để khai báo 1 hằng. Biến có thể thay đổi được giá trị còn hằng số thì không. Ví dụ, ta có thể khai báo biến như sau:
var myName:String = "Duong Vu" var myAge:Int = 25 var isMeGay:Boolean = false
Ở trên đây mình đã khai báo các biến myName, myAge, isMeGay. Mỗi biến đều được khai báo kiểu dữ liệu và giá trị ban đầu của nó. Chắc các bạn cũng dễ dàng nhận thấy cú pháp khai báo biến sẽ là:
var tên_biến:kiểu_dữ_liệu = giá_trị_khởi_tạo
Cách khai báo biến này cũng tương tự với cách khai báo bên Java:
String myName = "Duong Vu"; int myAge = 25; boolean isMeGay = false;
Tuy nhiên ở bên Kotlin có 1 sự tiện lợi hơn Java, đó là khi khai báo biến ta có thể không cần chỉ ra kiểu dữ liệu. Ví dụ như sau:
var myName = "Duong Vu" //biến myName sẽ được hiểu là kiểu String và có giá trị là Duong Vu var myAge = 25 // biến myAge sẽ được hiểu là kiểu Int và có giá trị là 25 var isMeGay = true //biến isMeGay sẽ được hiểu là kiểu Boolean và có giá trị là false
Có nghĩa là khi ta khai báo biến có giá trị khởi tạo, Kotlin sẽ tự động gán kiểu cho biến dựa vào giá trị khởi tạo đó.
Hằng số
Hằng số hoàn toàn tương tự như biến số. Chỉ khác là chúng không thể thay đổi giá trị như biến số. Hằng số được khai báo bởi từ khoá val:
val pi = 3.14f val daysOfWeek = 7 val hoursOfDay = 24
Lưu ý: nếu bạn cố thay đổi giá trị của 1 hằng số, bạn sẽ nhận được thông báo sau: Val cannot be reassigned (hằng số không thể được gán lại gía trị). Ví dụ thế này
val pi = 3.14f pi = 6.28f
Bạn sẽ nhận ngay thông báo lỗi từ IDE. Hãy tự thử nghiệm thêm nhé!
Các kiểu dữ liệu cơ bản
Kiểu dữ liệu số
Trong Kotlin có nhiều kiểu dữ liệu để biểu diễn số. Nhưng về cơ bản cũng tương tự Java thôi. Kotlin cung cấp những kiểu dữ liệu số sau:
Các kiểu số nguyên
- Long – 64 bit
- Int – 32 bit
- Short – 16 bit
- Byte – 8 bit
Các kiểu số thực
- Double – 64 bit
- Float – 32 bit
Ví dụ:
var varInt = 63 var varLong = 4L var varFloat = 9.32F var varDouble = 55.55 var varBinary = 0b000111 var varHexadecimal = 0x1F
Lưu ý: Khi khởi tạo 1 biến số thực, mặc định Kotlin sẽ hiểu biến đó có kiểu Double. Ví dụ:
var pi = 3.4 //Khi này biến pi được hiểu là kiểu Double
Nếu muốn khởi tạo 1 biến dạng Float ta cần thêm ký tự f hoặc F đằng sau giá trị:
var pi = 3.4f //Khi này biến pi được hiểu là kiểu Float
Tương tự với biến số nguyên, mặc định sẽ được hiểu là kiểu Int:
var year = 2018 // Khi này biến year được hiểu là kiểu Int
Nếu muốn đưa nó về dạng long, ta thêm ký tự L sau giá trị:
var year = 2018L // Khi này biến year được hiểu là kiểu Long
Chuyển đổi giữa các kiểu dữ liệu số
Tất cả các kiểu dữ liệu số đều được cung cấp các hàm để chuyển đổi từ kiểu dữ liệu này sang kiểu dữ liệu khác. Ví dụ:
var myInt = 100 // Khởi tạo biến myInt với giá trị 100 var myDouble = myInt.toDouble() //chuyển đổi sang kiểu Double var myLong = myInt.toLong() //chuyển đổi sang kiểu Long var myFloat = myInt.toFloat() //chuyển đổi sang kiểu Float var myByte = myInt.toByte() //chuyển đổi sang kiểu Byte
Như vậy mình có thể convert 1 biến từ kiểu này sang kiểu kia 1 cách dễ dàng.
Lưu ý: Ta không thể trực tiếp gán giá trị của 2 biến khác kiểu như sau:
val myInt = 100 val myLong: Long = myNumber // lỗi: Type mismatch
Kiểu dữ liệu Boolean
Kiểu Boolean trong Kotlin hoàn toàn giống với Java. Giá trị của kiểu dữ liệu này là true hoặc false. Các toán tử đối với kiểu Boolean cũng hoàn toàn giống Java:
- || (hoặc)
- && (và)
- ! (phủ định)
Ví dụ:
val myTrue = true val myFalse = false val a = 1 val b = 3 val c = 4 val d = 6 val result = a < b && d > c // result có giá trị true
Kiểu dữ liệu String
String biểu diễn dữ liệu dạng chuỗi ký tự. Trong Kotlin có 2 dạng String.
- Dạng thông thường: các ký tự trong String đc biểu diễn trong cặp ngoặc kép, dạng này khá giống với String trong Java:
var myName = "My name is Duong Vu"
Khi muốn hiển thị các ký tự đặc biệt ,ví dụ như xuống dòng, ta phải dùng cách sử dụng ký hiệu. Ví dụ để tạo 1 string chứa 3 dòng ta phải làm như sau:
var myString = "This is first line\nThis is second line\nThis is first line" println(myString)
Lưu ý: Ở trên mình đã sử dụng câu lệnh println để in ra giá trị của chuỗi myString trên console. Hàm println có thể in ra giá trị của tất cả các biến, không riêng gì biến kiểu String.
Kết quả in ra ở console sẽ là:
This is first line This is second line This is first line
Như mọi người thấy ta phải dùng \n để thay cho ký tự xuống dòng. Nhưng với dạng String thứ 2 thì khác.
- Dạng thứ 2: các ký tự trong String được biểu diễn trong cặp dấu nháy 3 “””. Ví dụ:
var text = """ this is first line this is second line this is third line """ println(text)
Kết quả:
this is first line this is second line this is third line
Với dạng này ta có thể sử dụng xuống dòng, tab hay bất kỳ 1 ký tự đặc biệt nào 1 cách thoải mái. Cứ như kiểu ta đang soạn thảo văn bản vậy :3
- String template
Nếu trong Java, để hiển thị giá trị của 1 biến số trong 1 chuỗi thì ta phải dùng phép cộng chuỗi hoặc String.format. Thì ở Kotlin, mọi việc đơn giản và trực quan hơn rất nhiều. String trong Kotlin cho phép ta gắn giá trị của 1 biến vào thân chuỗi chỉ với ký tự $. Ví dụ:
var numberOfApples = 4 var numberOfBananas = 5 var numberOfOrange = 2 var fruitDescription = "There are $numberOfApples apples, $numberOfBananas bananas, $numberOfOrange oranges" print(fruitDescription)
Thế là giá trị của các biến numberOfApples ,numberOfBananas, numberOfOrange được gắn vào String cực kỳ gọn nhẹ. Ví dụ 2:
var numberOfRedCar = 2 var numberOfBlueCar = 3 var carDescription = "There are ${numberOfBlueCar+numberOfRedCar} cars" print(carDescription)
Ví dụ này cho thấy, khi muốn biểu diễn giá trị của 1 biểu thức (hoặc là hàm số) thì biểu thức (hàm số) đó phải được bao bởi cặp {}. Như ví dụ trên mình đã dùng ${numberOfBlueCar+numberOfRedCar} để biểu diễn tổng của 2 biến numberOfBlueCar và numberOfRedCar đó. Ví dụ nữa :
var myString = "Hello, I am Mr.Rain" print("String length = ${myString.length}")
Kiểu dữ liệu mảng
Mảng (Array) là 1 tập hợp các phần tử. Trong Kotlin có 2 cách để tạo ra mảng, đó là sử dụng phương thức
arrayOf()
hoặc dùng hàm khởi tạo:
Array()
Ví dụ, ta thử tạo 1 mảng chứa các số nguyên và số thực sử dụng phương thức arrayOf()
val firstArray = arrayOf(1, 3, 5, 7, 9, 11f, 13f)
Ta vừa khởi tạo 1 mảng có số phần tử là 7 và các phần tử như trên. Nếu muốn tất cả các phần tử của mảng phải có cùng kiểu dữ liệu, ta cần khai báo kiểu dữ liệu bằng cách sau:
val intArray = arrayOf<Int>(4, 5, 7, 3, 1, 0)
Như ở ví dụ trên ta đã khai báo kiểu Int cho array cần khởi tạo. Có 1 cách khác như thế này:
val intArray = intArrayOf(4, 5, 7, 3, 1, 0)
Kotlin cũng cung cấp cho ta các hàm để tạo mảng chứa kiểu dữ liệu cơ bản khác:
charArrayOf() booleanArrayOf() longArrayOf() shortArrayOf() byteArrayOf()
Giờ ta sẽ thử dùng hàm khởi tạo Array() để tạo ra 1 mảng. Hàm này yêu cầu truyền vào size (số phần tử) và 1 lambda function. Mình sẽ tìm hiểu về lambda function trong những bài viết sau, giờ ta chỉ cần hiểu đơn giản đó là 1 hàm không có tên, và thực hiện thao tác với tham số đầu vào là chỉ số của mảng:
val numbersArray = Array(4, { i -> i * 3 })
Trong đoạn code trên, ta đã truyền vào size của mảng là 4. Và 1 lambda function sử dụng tham số đầu vào là chỉ số của mảng để tính toán giá trị của phần tử ứng với chỉ số đó (giá trị bằng 3 lần chỉ số). Mảng numbersArray trên có cùng giá trị với mảng:
val numbersArray = arrayOf<Int>(0, 3, 6, 9)
Đơn giản đúng không?
Comment – Chú thích
Comment là những đoạn code không được biên dịch, có vai trò ghi chú, chú thích trong code. Comment trong Kotlin giống hệt với Java:
/* This is a multiple lines comment This is first line. This is seconde line */ // 1 line comment
Kết luận
Ở bài này mình đã giới thiệu về biến, hằng số, các kiểu dữ liệu cơ bản của Kotlin, mảng, comment. Bài sau mình sẽ giới thiệu 1 kiến thức cực kỳ thú vị (và quan trọng) trong lập trình Kotlin. Đó là cách kiểm tra biến null an toàn trong Kotlin. Các bạn hãy đọc và cho ý kiến nhé.
One thought on “Kotlin Bài 2: Biến và các kiểu dữ liệu cơ bản trong Kotlin”