Chủ Nhật, 22 tháng 10, 2017

Kotlin cơ bản: biến, kiểu, mảng

1. Biến - Variables


Với ngôn ngữ Kotlin, chúng ta sử dụng:

- val - khai báo 1 hằng (constant)
- var - khai báo 1 biến (variable)

Kiểu của biến sẽ được đặt sau tên biến

Ex: tôi khai báo 1 hằng như sau

val fullName: String = "Nguyen The Lam"

Tuy nhiên trong Kotlin chúng ta có thể bỏ từ khóa String thì trình biên dịch cũng ko báo lỗi.

val fullName = "Nguyen The Lam" // vẫn biên dịch tốt

Với khai báo trên thì trình biên dịch đã tự ngầm hiểu kiểu của hằng là String.

Khác nhau giữa val & var:

với khai báo val thì ko thể thay đổi giá trị sau khi khai báo - var thì thay đổi được.

Ex:
val dateOfBirth = "10th March1999"
      dateOfBirth = "10th March 2000" // cannot be changed

var address = "Ha noi"
      address = "Sai gon" // can be changed

Lưu ý: với biến khai báo var thì trình biên dịch sẽ định kiểu theo giá trị mà ta gán đầu tiên, nếu có thay đổi thì phải thay đổi theo kiểu trước đó.

Ex: var age = 20
             age = "20 years old" // Error: type mismatch

--> Với những ứng dụng đa luồng cần an toàn thì ta nên dùng val

Trong java chúng ta có thể khai báo nhiều biến trên cùng 1 dòng (line), nhưng điều đó là ko thể trong Kotlin.

val petName= "Cat", yourName = "Baby" // this won't compile

// this will compile
var petName = "Cat"
var yourName = "Baby"

2. Sự tuy luận kiểu (type inference) và sự loại bỏ (deduction)

Java thì ko có cơ chế type inference, nên khi khai báo bạn phải định kiểu cho biến, method, ..
Cơ chế tự suy luận kiểu của Kotlin giúp giảm bớt code ko cần thiết mà bạn phải viết.

val capitalOfVietnam = "Hanoi" // Compiler sẽ tự suy luận kiểu là String

3. Các kiểu cơ bản

Trong kotlin tất cả các kiểu đều là object, điều này sẽ khác trong java - java phân biệt kiểu nguyên thủy (primitive) và kiểu tham chiếu (reference), và java dùng wrapper class của các kiểu nguyên thủy để thao tác như object. Ví dụ java.lang.Integer, ...

Number

- Kiểu số nguyên trong kotlin
Byte - 8 bit
Short - 16 bit
Int - 32 bit
Long - 64 bit

- Kiểu số thực (floating point) trong kotlin
Float - 32 bit
Double - 64 bit

Để chuyển đổi 1 số từ kiểu này sang kiểu khác ta dùng các hàm như: toByte()toInt()toLong()toFloat()toDouble()toChar()toShort().

val numberInt = 123
val numberLong = numberInt.toLong()

Tương tự cho các kiểu khác.

Cách để chuyển 1 String sang số:

val stringNubmer = "123"
val intNumber = stringNumber.toInt()

Kiểu Boolean

Boolean trong kotlin cũng tương tự trong java
Giá trị có thể là true hoặc flase
Các toán tử thao tác với kiểu boolean: || && !

Ex:
val falseBoolean = false

val trueBoolean = true

val x = 1
val y = 3
val z = 6
val n = x < y && z > y // n is true

String

val myName = "Nguyen The Lam"

Để tạo một string trên nhiều dòng ta dùng 3 nháy kép:

val myProfile = """
                 Nguyen The Lam
                 Ha Noi
                 Viet Nam """

Kotlin hỗ trợ string interpolation hoặc string template // dùng tạm tiếng anh, dịch thấy ko hay
Chúng ta có thể làm như sau:

val age = 20
val myProfile = "Nguyen The Lam $age years old" // Nguyen The Lam 20 years old

Sau ký tự $ chúng ta có thể gọi hàm, so sánh logic

val myName= "Nguyen The Lam"
val message = "The first letter in my name is ${myName.first()}" // The first letter in my name is N


val myAge = 20
val message = "You are ${if (age > 30) "old" else "young"}" // You are young


Array

Trong kotlin có 2 cách chính để tạo array

- arrayOf()

val arrA = arrayOf(1,2,3)

tham số truyền vào arrayOf() có thể khác kiểu --> mixed array

val arrMix = arrayOf(1, "Hello", true)

để truy cập phần tử trong array: arrA[0] //1 ....

Nếu muốn quy định tham số truyền vào arrayOf() phải là cùng 1 kiểu thì:

Ex: cùng kiểu Int thì làm như sau

val myArray = arrayOf<Int>(1, "Hello", true) // will not compile

--> tham số truyền vào phải cùng kiểu
or

val myArray = intArrayOf(1, "Hello", true// will not compile

--> tham số truyền vào phải cùng kiểu

Tương tự cho các kiểu dữ liệu khác.

- Array() constructor


Yêu cầu phải khai báo size và sử dụng lambda function

lambda function sẽ tìm hiểu ở một bài khác

Bây giờ chỉ cần hiểu: lambda function để khởi tạo array với các phần tử.

val numbersArray = Array(10, { i -> i * 2 })

Đoạn code trên, tôi khai báo Array với size = 10 (tham số thứ nhất)

tham số thứ 2 là lambda function với i là chỉ số của array bắt đầu từ 0, phía sau dấu -> là
giá trị tương ứng với chỉ số.
Cụ thể: chỉ số 0 có giá trị là 0*2 = 0
chỉ số 1 có giá trị lá 1*2 = 1, ...

Comment
comment trong kotlin giống y hệt trong java
trên 1 dòng // comment trên 1 dòng
comment nhiều dòng
/* dòng thứ nhất
dòng thứ hai
dòng thứ .... */

thelam92

0 nhận xét:

Đăng nhận xét