Kotlin Bài 2: Biến và các kiểu dữ liệu cơ bản trong Kotlin

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é!

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:

Ở 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à:

Cách khai báo biến này cũng tương tự với cách khai báo bên Java:

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:

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:

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

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ụ:

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ụ:

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ị:

Tương tự với biến số nguyên, mặc định sẽ đượ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ị:

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ụ:

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:

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ụ:

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:

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:

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à:

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ụ:

Kết quả:

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ụ:

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:

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 numberOfBlueCarnumberOfRedCar đó. Ví dụ nữa :

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

hoặc dùng hàm khởi tạo:

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()

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:

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:

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:

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:

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:

Đơ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:

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é.

 

Hãy chia sẻ

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *