1. Trước khi bắt đầu
Trong các ứng dụng mà bạn sử dụng trên điện thoại, hãy lưu ý rằng một số phần của ứng dụng được giữ nguyên, trong khi các phần khác sẽ thay đổi (còn gọi là biến).
Ví dụ: tên của các danh mục trong ứng dụng Cài đặt được giữ nguyên – Mạng và Internet, Thiết bị đã kết nối, Ứng dụng và nhiều danh mục khác.
Mặt khác, khi bạn xem một ứng dụng tin tức, các bài viết sẽ thay đổi thường xuyên. Tên bài viết, nguồn, thời gian đăng và hình ảnh sẽ được thay đổi.
Bạn cần viết mã như thế nào để nội dung thay đổi theo thời gian? Bạn không thể viết lại mã trong ứng dụng mỗi khi cần đăng bài viết mới. Việc đăng bài mới diễn ra mỗi ngày, mỗi giờ và mỗi phút!
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách viết mã với các biến để bạn có thể thay đổi một số phần nhất định trong chương trình mà không cần phải viết một tập lệnh hoàn toàn mới. Bạn sẽ sử dụng Kotlin Playground như trong lớp học lập trình trước.
Sản phẩm bạn sẽ tạo ra
- Chương trình ngắn sử dụng các biến trong Kotlin.
Kiến thức bạn sẽ học được
- Cách định nghĩa biến và cập nhật giá trị của biến.
- Cách chọn kiểu dữ liệu (data type) thích hợp cho biến từ các kiểu dữ liệu cơ bản trong Kotlin.
- Cách thêm ghi chú vào mã.
Bạn cần có
- Máy tính có kết nối Internet và trình duyệt web
2. Biến và kiểu dữ liệu
Trong lĩnh vực lập trình máy tính có khái niệm về biến - vùng chứa dữ liệu. Bạn có thể hình dung nó là một hộp chứa giá trị. Chiếc hộp này có nhãn là tên của biến. Khi tham chiếu đến hộp này theo tên biến, bạn sẽ có quyền truy cập vào giá trị của hộp.
Tại sao cần lưu trữ giá trị trong một hộp và tham chiếu hộp đó theo tên, trong khi bạn có thể trực tiếp sử dụng giá trị đó? Vấn đề là khi mã sử dụng giá trị trực tiếp trong tất cả lệnh, chương trình sẽ chỉ hoạt động cho một trường hợp cụ thể đó.
Dưới đây là một ví dụ giúp bạn dễ dàng hiểu được lợi ích khi sử dụng biến. Dưới đây là bức thư dành cho một người mà bạn mới gặp.
Chào Lauren!
Rất vui được gặp bạn hôm nay tại văn phòng. Tôi rất mong được gặp bạn vào thứ Sáu.
Chúc một ngày tốt lành!
Bức thư này rất tuyệt, nhưng chỉ phù hợp với trường hợp cụ thể với Lauren. Điều gì xảy ra nếu bạn phải viết một bức thư nhiều lần, mỗi bức chỉ cần thay đổi một vài phần để gửi cho nhiều người? Sẽ hiệu quả hơn nếu bạn tạo một mẫu thư và để trống các phần có thể thay đổi.
Chào ____ !
Rất vui được gặp bạn hôm nay tại _____. Tôi rất mong được gặp bạn vào ____ .
Chúc một ngày tốt lành!
Bạn cũng có thể chỉ định kiểu thông tin được điền vào mỗi khoảng trống. Điều này đảm bảo rằng mẫu thư sẽ được sử dụng đúng như mong đợi.
Chào { tên } !
Rất vui được gặp bạn hôm nay tại { địa điểm } . Tôi rất mong được gặp bạn vào { ngày } .
Chúc một ngày tốt lành!
Về mặt lý thuyết, việc xây dựng một ứng dụng cũng tương tự như vậy. Bạn đặt phần giữ chỗ cho một số dữ liệu và giữ nguyên các phần khác của ứng dụng.
Trong hình minh hoạ trên của ứng dụng tin tức, văn bản "Welcome", tiêu đề "Latest news for you" và văn bản của nút "View more articles" luôn giữ nguyên. Ngược lại, tên người dùng và nội dung của mỗi bài viết sẽ thay đổi. Do vậy, đây là cơ hội tuyệt vời để sử dụng các biến nhằm lưu giữ từng phần thông tin.
Bạn không muốn viết mã (hoặc các lệnh) trong ứng dụng tin tức mà chỉ hoạt động cho người dùng có tên Alex hoặc cho một bài tin tức luôn có cùng tiêu đề và ngày xuất bản. Thay vào đó, bạn muốn một ứng dụng linh hoạt hơn, do đó bạn nên viết mã của mình bằng cách tham chiếu đến các tên biến như name
, article1Name
, article1Date
, v.v. Sau đó, mã của bạn sẽ trở nên tổng quát cho nhiều trường hợp sử dụng, trong đó tên người dùng và thông tin chi tiết về bài viết có thể khác đi.
Ứng dụng mẫu chứa các biến
Hãy xem ví dụ về một ứng dụng để tìm hiểu cách sử dụng các biến.
Trong ứng dụng Maps, bạn có thể tìm thấy màn hình thông tin về từng vị trí, chẳng hạn như nhà hàng hoặc doanh nghiệp. Ảnh chụp màn hình từ ứng dụng Google Maps ở trên hiển thị thông tin về trụ sở chính của Google - Googleplex. Bạn nghĩ những phần dữ liệu nào được lưu trữ dưới dạng biến trong ứng dụng?
- Tên của vị trí
- Điểm xếp hạng theo sao của vị trí
- Số bài đánh giá của vị trí
- Người dùng có lưu (hoặc đánh dấu) vị trí này hay chưa
- Địa chỉ của vị trí
- Mô tả của vị trí
Thay đổi dữ liệu được lưu trữ trong các biến này rồi bạn sẽ có ứng dụng bản đồ linh hoạt để hiển thị thông tin về các vị trí khác.
Kiểu dữ liệu
Khi bạn quyết định khía cạnh của ứng dụng có thể là biến, bạn phải chỉ định kiểu dữ liệu nào có thể được lưu trữ trong các biến đó. Trong Kotlin, có một số kiểu dữ liệu cơ bản phổ biến. Mỗi hàng của bảng phía dưới cho thấy các kiểu dữ liệu khác nhau. Đối với mỗi kiểu dữ liệu, sẽ có phần mô tả về loại dữ liệu có thể lưu giữ và giá trị mẫu.
Kiểu dữ liệu Kotlin | Loại dữ liệu mà kiểu dữ liệu này có thể chứa | Ví dụ về giá trị cố định |
| Văn bản |
|
| Số nguyên |
|
| Số thập phân |
|
| Số thập phân (ít chính xác hơn |
|
|
|
|
Bây giờ, bạn đã biết một số kiểu dữ liệu Kotlin phổ biến. Kiểu dữ liệu nào sẽ phù hợp với từng biến được xác định trong trang thông tin vị trí mà bạn đã xem trước đó?
- Tên của vị trí là văn bản, nên tên có thể được lưu trữ trong biến có kiểu dữ liệu là
String.
- Điểm xếp hạng theo sao của vị trí là một số thập phân (chẳng hạn như 4,2 sao) nên có thể được lưu trữ dưới dạng
Double
. - Số bài đánh giá của vị trí là một số nguyên, do đó bạn nên lưu trữ dữ liệu số bài đánh giá dưới dạng
Int
. - Việc người dùng có lưu vị trí này hay chưa chỉ có thể dưới dạng hai giá trị (đã lưu hoặc chưa lưu). Do vậy dữ liệu này được lưu trữ dưới dạng
Boolean
, trong đótrue
vàfalse
có thể đại diện cho từng trạng thái. - Địa chỉ của vị trí là văn bản, vì vậy địa chỉ phải là
String
. - Mô tả của vị trí cũng là văn bản, vì vậy dữ liệu phải là
String
.
Thực hành trong hai trường hợp khác bên dưới. Xác định cách sử dụng các biến và kiểu dữ liệu của các biến đó trong các ứng dụng sau.
- Trong ứng dụng xem video, chẳng hạn như ứng dụng YouTube, sẽ có màn hình thông tin về video. Có thể sử dụng biến ở đâu? Kiểu dữ liệu của các biến đó là gì?
Không có một câu trả lời đúng hoàn toàn cho trường hợp này, nhưng trong ứng dụng xem video, bạn có thể dùng biến cho những đoạn dữ liệu sau:
- Tên của video (
String
) - Tên của kênh (
String
) - Số lượt xem video (
Int
) - Số lượt thích video (
Int
) - Số lượt bình luận trên video (
Int
)
- Trong một ứng dụng email như Gmail, màn hình hộp thư đến sẽ liệt kê các email nhận được gần đây nhất. Có thể sử dụng biến ở đâu? Kiểu dữ liệu của các biến đó là gì?
Xin nhắc lại, không có một đáp án nào chính xác hoàn toàn. Trong một ứng dụng email, bạn có thể dùng các biến cho các đoạn dữ liệu sau:
- Tên của người gửi (
String
) - Tiêu đề của email (
String
) - Email có được gắn dấu sao hay không (
Boolean
) - Số lượng email mới trong hộp thư đến (
Int
)
Thử nào
- Mở ứng dụng yêu thích trên điện thoại.
- Xác định phần mà bạn nghĩ rằng ứng dụng sử dụng biến trên màn hình cụ thể đó.
- Đoán biến đó thuộc kiểu dữ liệu gì.
- Hãy chia sẻ câu trả lời của bạn trên mạng xã hội bằng cách đăng ảnh chụp màn hình của ứng dụng, giải thích về những phần mà bạn cho rằng sử dụng biến và hashtag #AndroidBasics.
Tuyệt vời, bạn đang đạt kết quả xuất sắc trong lớp học lập trình này! Hãy chuyển đến phần tiếp theo để tìm hiểu thêm về cách sử dụng biến và kiểu dữ liệu trong mã.
3. Định nghĩa và sử dụng biến
Định nghĩa và sử dụng biến
Trước tiên, bạn phải định nghĩa biến trong mã của mình trước khi có thể sử dụng biến đó. Điều này tương tự như những điều bạn đã tìm hiểu được trong lớp học lập trình trước đó về việc xác định các hàm trước khi gọi các hàm đó.
Khi định nghĩa một biến, bạn sẽ gán tên để có thể xác định duy nhất biến đó. Bạn cũng có thể chỉ định kiểu dữ liệu mà biến có thể giữ. Cuối cùng, bạn có thể cung cấp một giá trị ban đầu sẽ được lưu trữ trong biến, nhưng điều này là không bắt buộc.
Sau khi định nghĩa một biến, bạn có thể sử dụng biến đó trong chương trình của mình. Để sử dụng một biến, hãy nhập tên biến trong mã của bạn. Hành động này sẽ cho trình biên dịch Kotlin biết rằng bạn muốn sử dụng giá trị của biến tại vị trí đó trong mã.
Ví dụ: định nghĩa biến cho số thư chưa đọc trong hộp thư đến của người dùng. Biến có thể có tên count
. Lưu trữ một giá trị như số 2
bên trong biến, đại diện cho 2
thư chưa đọc trong hộp thư đến của người dùng. (Bạn có thể chọn một số khác để lưu trong biến, nhưng để phục vụ mục đích của ví dụ này, hãy sử dụng số 2
.)
Mỗi khi mã cần truy cập số lượng tin nhắn chưa đọc, hãy nhập count
vào mã. Khi thực thi các lệnh của bạn, trình biên dịch Kotlin sẽ thấy tên biến trong mã của bạn rồi sử dụng giá trị của biến thay cho tên đó.
Về mặt kỹ thuật, có các từ cụ thể hơn để mô tả quá trình này:
Biểu thức là một đơn vị mã nhỏ chứa giá trị. Biểu thức có thể được tạo thành từ các biến, lệnh gọi hàm, v.v. Trong trường hợp bên dưới, biểu thức được tạo thành từ một biến: biến count
. Giá trị của biểu thức là 2
.
Xác định có nghĩa là xác định giá trị của biểu thức. Trong trường hợp này, biểu thức có giá trị là 2
. Trình biên dịch xác định giá trị các biểu thức trong mã và sử dụng các giá trị đó khi thực thi các lệnh trong chương trình.
Để quan sát hành vi này trong Kotlin Playground, hãy chạy chương trình trong phần tiếp theo.
Ví dụ
- Mở Kotlin Playground trong trình duyệt web.
- Thay thế mã hiện tại trong Kotlin Playground bằng chương trình sau.
Chương trình này tạo một biến có tên là count
với giá trị ban đầu là 2
rồi sử dụng bằng cách in ra giá trị của biến count
cho kết quả. Đừng lo lắng nếu bạn chưa hiểu được tất cả khía cạnh của cú pháp mã. Nội dung này sẽ được giải thích chi tiết hơn trong các phần tiếp theo.
fun main() {
val count: Int = 2
println(count)
}
- Chạy chương trình và bạn sẽ được kết quả:
2
Khai báo biến
Trong chương trình bạn chạy, dòng mã thứ hai cho biết:
val count: Int = 2
Câu lệnh này tạo một biến số nguyên có tên là count
và chứa số 2
.
Có thể bạn sẽ cần một chút thời gian để làm quen với việc đọc cú pháp (hoặc định dạng) để khai báo biến trong Kotlin. Sơ đồ dưới đây cho biết vị trí từng phần của biến, cũng như vị trí của dấu cách và ký hiệu.
Trong ví dụ về biến count
, bạn có thể thấy khai báo biến bắt đầu bằng từ val
. Tên của biến là count
. kiểu dữ liệu là Int
và giá trị ban đầu là 2
.
Mỗi phần trong khai báo biến đều được giải thích chi tiết hơn ở phía dưới.
Từ khoá để định nghĩa biến mới
Để định nghĩa biến mới, hãy bắt đầu bằng từ khoá Kotlin val
(là từ viết tắt của value). Sau đó, trình biên dịch Kotlin biết rằng phần khai báo biến nằm trong câu lệnh này.
Tên biến
Giống như việc đặt tên cho một hàm, bạn cũng cần đặt tên cho biến. Trong phần khai báo biến, tên biến sẽ theo sau từ khoá val
.
Bạn có thể chọn bất kỳ tên biến nào mình muốn, nhưng tốt nhất nên tránh sử dụng từ khóa Kotlin làm tên biến.
Tốt nhất bạn nên chọn tên mô tả dữ liệu mà biến lưu trữ để mã dễ đọc hơn.
Tên biến phải tuân theo quy ước viết hoa Camel như đã học trong phần tên hàm. Từ đầu tiên của tên biến được viết thường. Nếu tên biến có nhiều từ thì không được có dấu cách giữa các từ và tất cả từ khác phải bắt đầu bằng một chữ cái viết hoa.
Ví dụ về tên biến:
numberOfEmails
cityName
bookPublicationDate
Trong ví dụ về mã trước đó, count
là tên của biến.
val count: Int = 2
Kiểu dữ liệu của biến
Sau tên biến, bạn sẽ thêm dấu hai chấm, dấu cách và kiểu dữ liệu của biến. Như đã đề cập trước đó, String
, Int
, Double
, Float,
và Boolean
là một số kiểu dữ liệu Kotlin cơ bản. Bạn sẽ tìm hiểu thêm về các kiểu dữ liệu khác trong khoá học này. Hãy nhớ viết kiểu dữ liệu chính xác như được hướng dẫn và bắt đầu mỗi kiểu dữ liệu bằng một chữ cái viết hoa.
Đối với ví dụ về biến count
, Int
là kiểu dữ liệu của biến.
val count: Int = 2
Toán tử gán
Trong phần khai báo biến, dấu bằng (=
) theo sau kiểu dữ liệu. Dấu bằng được gọi là toán tử gán. Toán tử gán sẽ gán một giá trị cho biến. Nói cách khác, giá trị ở vế phải của dấu bằng được lưu trữ trong biến ở vế trái của dấu bằng.
Giá trị biến ban đầu
Giá trị biến là dữ liệu thật sự được lưu trữ trong biến.
Đối với ví dụ về biến count
, số 2
là giá trị ban đầu của biến.
val count: Int = 2
Bạn cũng có thể nghe thấy cụm từ: "biến count
được khởi tạo với 2
". Điều này có nghĩa là khi khai báo biến, 2
là giá trị đầu tiên được lưu trữ trong biến.
Giá trị ban đầu sẽ khác nhau, tuỳ thuộc vào kiểu dữ liệu được khai báo cho biến.
Hãy tham khảo bảng phía dưới mà bạn có thể vẫn nhớ từ lớp học lập trình trước. Cột thứ ba cho biết các giá trị mẫu có thể lưu trữ được trong một biến thuộc từng kiểu dữ liệu tương ứng. Các giá trị này được gọi là giá trị cố định (literal) vì những giá trị này cố định và là hằng (giá trị luôn không đổi.) Ví dụ: số nguyên 32 luôn có giá trị là 32. Ngược lại, biến không cố định khi giá trị của biến có thể thay đổi. Bạn có thể thấy các giá trị cố định này được đề cập dựa trên kiểu: giá trị cố định kiểu chuỗi (string literal), giá trị cố định kiểu số nguyên (integer literal), giá trị cố định kiểu boolean (boolean literal), v.v.
Kiểu dữ liệu Kotlin | Loại dữ liệu mà kiểu dữ liệu này có thể chứa | Ví dụ về giá trị cố định |
| Văn bản |
|
| Số nguyên |
|
| Số thập phân |
|
| Số thập phân (ít chính xác hơn |
|
|
|
|
Điều quan trọng là bạn phải cung cấp một giá trị thích hợp và hợp lệ theo kiểu dữ liệu của biến. Ví dụ: bạn không thể lưu trữ giá trị cố định kiểu chuỗi như "Hello"
bên trong biến kiểu Int
vì trình biên dịch Kotlin sẽ báo lỗi.
Sử dụng biến
Dưới đây là chương trình mà bạn đã chạy trong Kotlin Playground. Cho đến giờ, bạn đã biết rằng dòng mã thứ hai tạo một biến số nguyên mới có tên là count
với giá trị là 2
.
fun main() {
val count: Int = 2
println(count)
}
Bây giờ, hãy xem dòng mã thứ ba. Bạn đang in kết quả của biến count
:
println(count)
Hãy chú ý rằng không có dấu ngoặc kép nào xung quanh từ count
. Đó là tên biến, không phải là giá trị cố định kiểu chuỗi. (Bạn sẽ thấy dấu ngoặc kép xung quanh từ đó nếu từ đó là giá trị cố định kiểu chuỗi). Khi bạn chạy chương trình, trình biên dịch Kotlin sẽ tính giá trị biểu thức bên trong dấu ngoặc đơn (là count
) cho lệnh println()
. Vì biểu thức có giá trị 2
, nên phương thức println()
được gọi với 2
làm dữ liệu đầu vào: println(2)
.
Do đó, kết quả của chương trình là:
2
Chỉ riêng con số trong kết quả không hữu ích lắm. Sẽ hữu ích hơn nếu bạn in thông điệp chi tiết hơn trong kết quả để giải thích nội dung 2
.
Mẫu chuỗi
Kết quả với một thông điệp hữu ích hơn có thể là:
You have 2 unread messages.
Hãy làm theo các bước dưới đây để chương trình đưa ra một thông điệp hữu ích hơn.
- Cập nhật chương trình trong Kotlin Playground với mã phía dưới. Đối với lệnh gọi
println()
, hãy chuyển thành một giá trị cố định kiểu chuỗi chứa tên biếncount
. Hãy nhớ đặt phần văn bản trong dấu ngoặc kép. Lưu ý rằng bạn sẽ không nhận được kết quả như mong đợi. Bạn sẽ khắc phục vấn đề này ở bước sau.
fun main() {
val count: Int = 2
println("You have count unread messages.")
}
- Chạy chương trình rồi kết quả sẽ hiển thị:
You have count unread messages.
Câu này không có ý nghĩa! Bạn muốn giá trị của biến count
hiển thị trong thông báo chứ không phải tên biến.
- Để sửa chương trình của bạn, hãy thêm ký hiệu đô la
$
trước biếncount
:"You have $count unread messages."
Đây là mẫu chuỗi do chứa biểu thức mẫu, trong trường hợp này là$count
. Biểu thức mẫu là một biểu thức được xác định với một giá trị, sau đó được thay vào chuỗi. Trong trường hợp này, biểu thức mẫu$count
có giá trị2
, và2
được thay vào chuỗi có chứa biểu thức này.
fun main() {
val count: Int = 2
println("You have $count unread messages.")
}
- Khi chạy chương trình, bạn sẽ có được kết quả phù hợp với mục tiêu mong muốn:
You have 2 unread messages.
Người dùng sẽ thấy câu này có ý nghĩa!
- Bây giờ, hãy thay đổi giá trị ban đầu của biến
count
thành một integer literal khác. Ví dụ: bạn có thể chọn số10
. Giữ nguyên phần còn lại của mã trong chương trình.
fun main() {
val count: Int = 10
println("You have $count unread messages.")
}
- Chạy chương trình. Hãy chú ý rằng kết quả sẽ thay đổi tương ứng với giá trị và bạn thậm chí không cần phải thay đổi câu lệnh
println()
trong chương trình.
You have 10 unread messages.
Bạn có thể thấy mẫu chuỗi hữu ích như thế nào. Bạn chỉ cần viết mẫu chuỗi một lần trong mã ("You have $count unread messages."
). Nếu bạn thay đổi giá trị ban đầu của biến count
, câu lệnh println()
vẫn sẽ hoạt động. Mã của bạn đã trở nên linh hoạt hơn!
Để làm nổi bật thêm điểm này, hãy so sánh hai chương trình bên dưới. Chương trình đầu tiên bên dưới sử dụng giá trị cố định kiểu chuỗi, trong chuỗi có số lượng chính xác các tin nhắn chưa đọc. Chương trình này chỉ hoạt động khi người dùng có 10 tin nhắn chưa đọc.
fun main() {
println("You have 10 unread messages.")
}
Bằng cách sử dụng biến và mẫu chuỗi trong chương trình thứ hai bên dưới, mã có thể thích ứng với nhiều tình huống hơn. Chương trình thứ hai này linh hoạt hơn!
fun main() {
val count: Int = 10
println("You have $count unread messages.")
}
Suy luận kiểu dữ liệu
Dưới đây là một mẹo cho phép bạn viết ít mã hơn khi khai báo biến.
Suy luận kiểu dữ liệu (type inference) là khi trình biên dịch Kotlin có thể suy luận (hoặc xác định) biến nên thuộc kiểu dữ liệu nào, mà thông tin về kiểu dữ liệu không được ghi rõ ràng trong mã. Điều đó có nghĩa là bạn có thể bỏ qua kiểu dữ liệu trong khai báo biến nếu bạn cung cấp giá trị ban đầu cho biến. Trình biên dịch Kotlin xem xét kiểu dữ liệu của giá trị ban đầu rồi giả định rằng bạn muốn biến lưu trữ dữ liệu thuộc kiểu đó.
Dưới đây là cú pháp để khai báo biến có sử dụng suy luận kiểu dữ liệu:
Quay lại ví dụ về count, ban đầu chương trình có chứa dòng mã sau:
val count: Int = 2
Tuy nhiên, dòng mã này cũng có thể được viết như sau. Xin lưu ý rằng dấu hai chấm (:
) và kiểu dữ liệu Int
đều bị bỏ qua. Cú pháp được cập nhật có ít từ hơn và giúp bạn đạt được kết quả tương tự khi tạo biến Int
có tên là count
với giá trị 2
.
val count = 2
Trình biên dịch Kotlin biết rằng bạn muốn lưu trữ 2
(một số nguyên) vào biến count
, vì vậy trình biên dịch có thể suy luận rằng biến count
thuộc kiểu Int
. Thật tiện lợi, đúng không? Đây là một ví dụ về việc bạn có thể viết mã Kotlin ngắn gọn hơn!
Mặc dù ví dụ này chỉ thảo luận về biến kiểu Int
, nhưng khái niệm suy luận kiểu dữ liệu áp dụng cho tất cả kiểu dữ liệu trong Kotlin.
Các phép toán cơ bản với số nguyên
Sự khác biệt giữa biến Int
có giá trị 2
và biến String
có giá trị "2"
là gì? Khi cả hai được in ra, kết quả đều giống nhau.
Ưu điểm của việc lưu trữ số nguyên dưới dạng Int
(trái ngược với dạng String
) là bạn có thể thực hiện các phép toán với biến Int
, chẳng hạn như cộng, trừ, nhân và chia (xem các phép toán khác). Ví dụ: bạn có thể cộng hai biến số nguyên để tính tổng. Trong một số trường hợp, bạn nên lưu trữ các số nguyên dưới dạng string. Tuy nhiên, mục đích của phần này là để hướng dẫn những việc bạn có thể làm với biến Int
.
- Quay lại Kotlin Background và xóa toàn bộ mã trong trình chỉnh sửa mã.
- Tạo một chương trình mới nơi bạn xác định một biến số nguyên cho số lượng email chưa đọc trong hộp thư đến và khởi tạo biến đó thành một giá trị như
5
. Bạn có thể chọn một số khác nếu muốn. Định nghĩa biến số nguyên thứ hai cho số email đã đọc trong hộp thư đến. Khởi tạo biến này với một giá trị như100
. Bạn có thể chọn một số khác nếu muốn. Sau đó in ra tổng số thư trong hộp thư đến bằng cách cộng hai số nguyên với nhau.
fun main() {
val unreadCount = 5
val readCount = 100
println("You have ${unreadCount + readCount} total messages in your inbox.")
}
- Chạy chương trình để hiển thị tổng số thư trong hộp thư đến:
You have 105 total messages in your inbox.
Đối với mẫu chuỗi, bạn đã biết rằng mình có thể đặt ký hiệu $
trước tên biến duy nhất. Tuy nhiên, nếu có một biểu thức phức tạp hơn, bạn phải đưa biểu thức đó vào trong dấu ngoặc nhọn với ký hiệu $
ở trước dấu ngoặc nhọn: ${unreadCount + readCount}
. Biểu thức trong dấu ngoặc nhọn unreadCount + readCount
có giá trị 105
. Sau đó, giá trị 105
được cộng thay vào giá trị cố định kiểu chuỗi.
- Để khám phá thêm về chủ đề này, hãy tạo các biến có tên và giá trị ban đầu khác nhau, đồng thời sử dụng biểu thức mẫu để in thông điệp kết quả.
Ví dụ: sửa đổi chương trình của bạn để in nội dung này:
100 photos 10 photos deleted 90 photos left
Dưới đây là một cách để bạn có thể viết chương trình, tuy nhiên có nhiều cách đúng khác để viết chương trình này!
fun main() {
val numberOfPhotos = 100
val photosDeleted = 10
println("$numberOfPhotos photos")
println("$photosDeleted photos deleted")
println("${numberOfPhotos - photosDeleted} photos left")
}
4. Cập nhật biến
Khi một ứng dụng đang chạy, bạn có thể cần cập nhật giá trị của biến. Ví dụ: trong một ứng dụng mua sắm, khi người dùng thêm mặt hàng vào giỏ hàng, thì tổng số mặt hàng trong giỏ sẽ tăng lên.
Hãy đơn giản hoá trường hợp ứng dụng mua sắm thành một chương trình đơn giản. Logic được viết ra bên dưới bằng ngôn ngữ của con người chứ không phải bằng Kotlin. Đây được gọi là mã giả (pseudocode) vì mô tả các điểm quan trọng về cách viết mã, nhưng không chứa tất cả chi tiết của mã.
Trong chức năng chính của chương trình:
- Tạo biến số nguyên
cartTotal
bắt đầu với giá trị0
. - Người dùng thêm một áo len có giá 20 đô la vào giỏ hàng.
- Cập nhật biến
cartTotal
thành20
, đây là chi phí hiện tại của các mặt hàng trong giỏ hàng. - In tổng chi phí của các mặt hàng trong giỏ hàng (biến
cartTotal
) thành kết quả.
Để đơn giản hoá mã hơn nữa, bạn không cần viết mã cho trường hợp khi người dùng thêm mặt hàng vào giỏ hàng. (Bạn vẫn chưa tìm hiểu về cách thức một chương trình có thể phản hồi thông tin người dùng cung cấp. Bạn sẽ học về kiến thức này ở bài sau.) Do đó, hãy tập trung vào những phần mà bạn tạo, cập nhật và in biến cartTotal
.
- Thay thế mã hiện tại trong Kotlin Playground bằng chương trình bên dưới. Trong dòng 2 của chương trình, bạn sẽ khởi tạo biến
cartTotal
với giá trị0
. Vì bạn cung cấp một giá trị ban đầu nên không cần chỉ định kiểu dữ liệuInt
do suy luận kiểu dữ liệu. Trong hàng 3 của chương trình, bạn hãy thử cập nhật biếncartTotal
thành20
với toán tử gán (=
). Trong dòng 4 của chương trình, bạn in biếncartTotal
bằng cách sử dụng một mẫu chuỗi.
fun main() {
val cartTotal = 0
cartTotal = 20
println("Total: $cartTotal")
}
- Chạy chương trình và bạn nhận được lỗi biên dịch.
- Xin lưu ý rằng lỗi này cho biết rằng
val
không thể gán lại. Lỗi nằm ở dòng thứ ba của chương trình, khi cố gắng thay đổi giá trị của biếncartTotal
thành20.
. Không thể gán biếnval
cartTotal
với một giá trị khác (20
) sau khi biến đó đã được gán cho một giá trị ban đầu (0
).
Val cannot be reassigned
Nếu bạn cần cập nhật giá trị của biến, hãy khai báo biến bằng từ khoá Kotlin var
thay vì val
.
- Từ khoá
val
– Sử dụng khi bạn dự kiến giá trị biến sẽ không thay đổi. - Từ khoá
var
– Sử dụng khi bạn dự kiến giá trị biến có thể thay đổi.
Với val
, biến thuộc kiểu chỉ có thể đọc, nghĩa là bạn chỉ có thể đọc hoặc truy cập giá trị của biến. Sau khi đặt giá trị, bạn không thể chỉnh sửa hoặc sửa đổi giá trị của biến. Với var
, biến thuộc kiểu có thể thay đổi, nghĩa là giá trị có thể được thay đổi hoặc sửa đổi. Bạn có thể thay đổi giá trị của biến.
Để ghi nhớ sự khác biệt, hãy xem val
là một giá trị cố định và var
là biến. Trong Kotlin, bạn nên sử dụng từ khoá val
thay vì từ khoá var
khi có thể.
- Cập nhật phần khai báo biến cho
cartTotal
ở dòng 2 của chương trình để sử dụngvar
thay vìval
. Mã sẽ nhìn như thế này:
fun main() {
var cartTotal = 0
cartTotal = 20
println("Total: $cartTotal")
}
- Hãy chú ý cú pháp mã ở dòng 3 của chương trình có nhiệm vụ cập nhật biến.
cartTotal = 20
Sử dụng toán tử gán (=
) để gán giá trị mới (20
) cho biến hiện hữu (cartTotal
). Bạn không cần phải sử dụng lại từ khoá var
vì biến này đã được định nghĩa.
Quay lại ví dụ về hộp, hãy tưởng tượng giá trị 20
đang được lưu trữ trong hộp có nhãn cartTotal
.
Dưới đây là sơ đồ về cú pháp chung để cập nhật biến đã được khai báo ở dòng mã trước đó. Bắt đầu câu lệnh có tên của biến mà bạn muốn cập nhật. Thêm một dấu cách, dấu bằng, theo sau là một dấu cách khác. Sau đó, hãy nhập giá trị cập nhật cho biến đó.
- Chạy chương trình và giờ thì mã sẽ được biên dịch thành công. Mã sẽ in kết quả này :
Total: 20
- Để xem giá trị biến thay đổi như thế nào khi chương trình đang chạy, hãy in biến
cartTotal
ra kết quả sau khi biến được khai báo lần đầu. Hãy xem những thay đổi của mã phía dưới. Dòng 3 có câu lệnhprintln()
mới. Cũng có một dòng trống được thêm vào dòng 4 của mã. Dòng trống không ảnh hưởng đến việc trình biên dịch hiểu mã. Thêm một dòng trống để có thể dễ đọc mã hơn bằng cách tách các khối mã liên quan.
fun main() {
var cartTotal = 0
println("Total: $cartTotal")
cartTotal = 20
println("Total: $cartTotal")
}
- Chạy lại chương trình và kết quả sẽ là:
Total: 0
Total: 20
Bạn có thể thấy rằng tổng số mặt hàng trong giỏ ban đầu là 0
. Sau đó, số mặt hàng cập nhật thành 20
. Bạn đã thành công cập nhật một biến! Điều này là vì bạn đã thay đổi cartTotal
từ biến chỉ có thể đọc (với val
) thành biến có thể thay đổi (với var
).
Hãy nhớ chỉ nên sử dụng var
để khai báo biến nếu bạn muốn giá trị thay đổi. Nếu không, bạn nên sử dụng val
để khai báo biến. Cách này giúp mã an toàn hơn. Việc sử dụng val
sẽ đảm bảo rằng các biến sẽ không được cập nhật trong chương trình nếu bạn không muốn. Sau khi được gán một giá trị, val
sẽ luôn giữ nguyên giá trị đó.
Toán tử tăng và toán tử giảm
Bây giờ, bạn đã biết rằng một biến phải được khai báo là var
để có thể cập nhật giá trị. Hãy áp dụng kiến thức này vào ví dụ email quen thuộc bên dưới.
- Thay thế mã trong Kotlin Playground bằng chương trình này:
fun main() {
val count: Int = 10
println("You have $count unread messages.")
}
- Chạy chương trình. Kết quả sẽ in ra như sau:
You have 10 unread messages.
- Hãy thay thế từ khoá
val
bằng từ khoávar
để chuyển biếncount
thành biến có thể thay đổi. Kết quả khi bạn chạy chương trình sẽ không thay đổi.
fun main() {
var count: Int = 10
println("You have $count unread messages.")
}
- Tuy nhiên, giờ đây bạn có thể cập nhật
count
thành một giá trị khác. Ví dụ: khi hộp thư đến có một email mới, bạn có thể tăngcount
thêm 1. (Bạn không cần phải viết mã cho việc nhận email mới. Việc lấy dữ liệu từ Internet là một chủ đề nâng cao mà chúng ta sẽ tìm hiểu ở bài sau). Hiện tại, hãy tập trung vào việc tăng giá trị biếncount
thêm1
bằng dòng mã sau:
count = count + 1
Biểu thức ở bên phải của dấu bằng là count + 1
và có giá trị là 11
. Lý do là giá trị hiện tại của count
là 10
(nằm ở dòng 2 của chương trình) và 10 + 1
bằng 11
. Sau đó thông qua toán tử gán, giá trị 11
sẽ được gán hoặc lưu trữ trong biến count
.
Thêm dòng mã này ở cuối hàm main()
của chương trình. Mã của bạn sẽ nhìn như sau:
fun main() {
var count = 10
println("You have $count unread messages.")
count = count + 1
}
Nếu chạy chương trình ngay bây giờ, bạn sẽ nhận được kết quả giống như trước vì bạn chưa thêm mã nào để sử dụng biến count
sau khi cập nhật.
- Thêm một lệnh print khác để in số thư chưa đọc sau khi cập nhật biến.
fun main() {
var count = 10
println("You have $count unread messages.")
count = count + 1
println("You have $count unread messages.")
}
- Chạy chương trình. Thông điệp thứ hai sẽ hiển thị biến
count
được cập nhất với11
tin nhắn mới.
You have 10 unread messages. You have 11 unread messages.
- Nói ngắn gọn, nếu muốn tăng giá trị biến thêm
1
, bạn có thể sử dụng toán tử tăng (++
) được tạo thành bởi hai dấu cộng. Bằng cách sử dụng các ký hiệu này ngay sau tên biến, bạn báo cho trình biên dịch biết mình muốn thêm 1 vào giá trị hiện tại của biến, sau đó lưu trữ giá trị mới trong biến. Hai dòng mã sau đây tạo ra kết quả giống nhau, nhưng việc sử dụng toán tử tăng++
sẽ giúp bạn rút ngắn mã.
count = count + 1
count++
Sửa đổi mã và sau đó chạy chương trình. Không được có dấu cách giữa tên biến và toán tử tăng.
fun main() {
var count = 10
println("You have $count unread messages.")
count++
println("You have $count unread messages.")
}
- Chạy chương trình. Kết quả vẫn như cũ nhưng giờ bạn đã biết thêm về một toán tử mới!
You have 10 unread messages. You have 11 unread messages.
- Bây giờ, hãy sửa đổi dòng 4 của chương trình để sử dụng toán tử giảm (
--
) sau tên biếncount
. Toán tử giảm được tạo thành từ hai dấu trừ. Bằng cách đặt toán tử giảm sau tên biến, bạn cho trình biên dịch biết rằng bạn muốn giảm giá trị của biến đi1
và lưu trữ giá trị mới vào biến.
fun main() {
var count = 10
println("You have $count unread messages.")
count--
println("You have $count unread messages.")
}
- Chạy chương trình. Chương trình sẽ in kết quả này:
You have 10 unread messages. You have 9 unread messages.
Trong phần này, bạn đã tìm hiểu cách cập nhật biến có thể thay đổi bằng cách sử dụng toán tử tăng (++
) và toán tử giảm (--
). Cụ thể hơn, count++
giống với count = count + 1
, count--
giống với count = count - 1
.
5. Khám phá các kiểu dữ liệu khác
Trong phần trước của lớp học lập trình, bạn đã học về một số kiểu dữ liệu cơ bản phổ biến: String
, Int
, Double
, Boolean
. Bạn vừa sử dụng kiểu dữ liệu Int
, giờ đây bạn sẽ khám phá các kiểu dữ liệu khác.
Kiểu dữ liệu Kotlin | Loại dữ liệu mà kiểu dữ liệu này có thể chứa |
| Văn bản |
| Số nguyên |
| Số thập phân |
|
|
Hãy thử các chương trình này trong Kotlin Playground để xem kết quả.
Double (Số thập phân)
Khi bạn cần một biến có giá trị thập phân, hãy sử dụng biến Double
. Để tìm hiểu về phạm vi hợp lệ của biến Double, hãy tham khảo bảng này và xem ví dù về các chữ số thập phân mà biến này có thể lưu trữ.
Hãy tưởng tượng bạn đang di chuyển đến một điểm, chuyến đi của bạn được chia thành ba phần riêng biệt vì bạn cần dừng xe dọc đường. Chương trình này cho biết tổng quãng đường còn lại cho tới điểm đến.
- Hãy nhập mã này vào Kotlin Playground. Bạn có thể hiểu được điều gì đang xảy ra ở mỗi dòng mã không?
fun main() {
val trip1: Double = 3.20
val trip2: Double = 4.10
val trip3: Double = 1.72
val totalTripLength: Double = 0.0
println("$totalTripLength miles left to destination")
}
Ba biến trip1
, trip2
và trip3
được khai báo để biểu thị khoảng cách của từng phần trong chuyến đi. Tất cả đều là biến Double
vì lưu trữ giá trị thập phân. Sử dụng val
để khai báo từng biến vì các giá trị của biến không thay đổi trong toàn bộ chương trình. Chương trình này cũng tạo một biến thứ tư có tên là totalTripLength
, hiện đang được khởi tạo với 0.0
. Dòng cuối cùng của chương trình in một thông điệp với giá trị totalTripLength
.
- Hãy sửa mã để biến
totalTripLength
là tổng quãng đường của ba phần chuyến đi.
val totalTripLength: Double = trip1 + trip2 + trip3
Biểu thức ở bên phải của dấu bằng có giá trị là 9.02
vì 3.20 + 4.10 + 1.72
bằng 9.02
. Giá trị 9.02
được lưu trữ trong biến totalTripLength
.
Toàn bộ chương trình của bạn sẽ nhìn như mã phía dưới:
fun main() {
val trip1: Double = 3.20
val trip2: Double = 4.10
val trip3: Double = 1.72
val totalTripLength: Double = trip1 + trip2 + trip3
println("$totalTripLength miles left to destination")
}
- Chạy chương trình. Chương trình sẽ in ra:
9.02 miles left to destination
- Sửa mã để xoá kiểu dữ liệu
Double
không cần thiết khỏi khai báo biến nhờ suy luận kiểu dữ liệu. Trình biên dịch Kotlin có thể dự đoán rằng các biến này thuộc kiểu dữ liệuDouble
dựa trên giá trị ban đầu là số thập phân.
fun main() {
val trip1 = 3.20
val trip2 = 4.10
val trip3 = 1.72
val totalTripLength = trip1 + trip2 + trip3
println("$totalTripLength miles left to destination")
}
- Hãy chạy lại mã để đảm bảo rằng mã vẫn có thể được biên dịch. Kết quả sẽ giống nhau, nhưng giờ đây mã của bạn đã đơn giản hơn!
String (Chuỗi)
Khi bạn cần một biến có thể lưu trữ văn bản, hãy sử dụng biến String
. Hãy nhớ sử dụng dấu ngoặc kép xung quanh giá trị cố định String, chẳng hạn như "Hello Kotlin"
, nhưng giá trị cố định Int
và Double
không có dấu ngoặc kép.
- Sao chép và dán chương trình này vào Kotlin Playground.
fun main() {
val nextMeeting = "Next meeting is:"
val date = "January 1"
val reminder = nextMeeting + date
println(reminder)
}
Hãy lưu ý rằng có hai biến String
được khai báo, biến nextMeeting
và biến date
. Sau đó, biến String
thứ ba có tên là reminder
được khai báo và được đặt giá trị bằng biến nextMeeting
cộng biến date
.
Với biểu tượng +, bạn có thể kết hợp hai chuỗi với nhau, điều này được gọi là phép nối. Hai chuỗi này được kết hợp với nhau, chuỗi này sau chuỗi kia. Kết quả của biểu thức, nextMeeting + date
là "Next meeting is:January 1"
như được thể hiện trong sơ đồ dưới đây.
Sau đó, giá trị "Next meeting is:January 1"
được lưu trữ vào biến reminder
bằng toán tử gán ở dòng 4 của chương trình.
- Chạy chương trình Chương trình sẽ in ra:
Next meeting is:January 1
Khi bạn nối hai chuỗi với nhau, sẽ không có khoảng trống giữa hai chuỗi đó. Nếu muốn có một dấu cách sau dấu hai chấm trong chuỗi kết quả, bạn cần thêm dấu cách vào một trong hai chuỗi.
- Cập nhật biến
nextMeeting
để có thêm một dấu cách ở cuối chuỗi trước dấu ngoặc kép đóng. (Ngoài ra, bạn có thể thêm một dấu cách vào đầu biếndate
). Chương trình của bạn sẽ nhìn như sau:
fun main() {
val nextMeeting = "Next meeting is: "
val date = "January 1"
val reminder = nextMeeting + date
println(reminder)
}
- Hãy chạy lại chương trình. Giờ đây, bạn sẽ thấy một dấu cách sau dấu hai chấm trong thông báo đầu ra.
Next meeting is: January 1
- Sửa đổi mã để nối (hoặc thêm) một đoạn văn bản khác vào biểu thức được lưu trữ trong biến
reminder
.
Sử dụng dấu +
để thêm giá trị cố định kiểu chuỗi "at work"
vào cuối chuỗi reminder
.
- Chạy chương trình.
Chương trình sẽ in kết quả này:
Next meeting is: January 1 at work
Đoạn mã dưới đây cho bạn biết một cách để có thể triển khai hành vi.
fun main() {
val nextMeeting = "Next meeting is: "
val date = "January 1"
val reminder = nextMeeting + date + " at work"
println(reminder)
}
Xin lưu ý rằng không có dấu ngoặc kép nào xung quanh nextMeeting
và date
vì đó là tên của các biến chuỗi hiện hữu (mà giá trị của biến là văn bản có dấu ngoặc kép). Ngược lại, giá trị cố định "at work"
trước đó không được định nghĩa trong bất kỳ biến nào. Do đó hãy thêm dấu ngoặc kép xung quanh văn bản này để trình biên dịch biết rằng đây là một chuỗi nên được nối với các chuỗi khác.
Về mặt kỹ thuật, bạn có thể nhận được cùng một kết quả bằng cách khai báo một biến String
duy nhất với toàn bộ văn bản thay vì sử dụng các biến riêng biệt. Tuy nhiên, mục đích của bài tập này là minh hoạ cách bạn có thể khai báo và thao tác các biến String
, đặc biệt là cách nối các chuỗi riêng biệt.
- Khi đọc mã có chứa chuỗi, bạn có thể gặp dãy ký tự thoát (escape sequences). Dãy ký tự thoát là các ký tự đứng sau dấu gạch chéo ngược (
\
), cũng được gọi là dấu gạch chéo ngược thoát.
Ví dụ: \"
nằm trong giá trị cố định kiểu chuỗi ở ví dụ dưới đây. Sao chép và dán mã này vào Kotlin Playground.
fun main() {
println("Say \"hello\"")
}
Bạn đã tìm hiểu trước đó cách sử dụng dấu ngoặc kép xung quanh chuỗi ký tự. Nhưng nếu bạn muốn sử dụng ký hiệu "
trong chuỗi của mình thì sao? Sau đó, bạn cần thêm dấu gạch chéo ngược trước dấu ngoặc kép dưới dạng \"
trong chuỗi của bạn. Hãy nhớ rằng vẫn phải có dấu ngoặc kép xung quanh toàn bộ chuỗi.
- Hãy chạy chương trình để xem kết quả. Chương trình sẽ hiển thị:
Say "hello"
Trong kết quả, có dấu ngoặc kép hiển thị xung quanh hello
bởi vì chúng ta đã thêm \"
trước và sau hello
trong câu lệnh println()
.
Để biết những dãy ký tự thoát được hỗ trợ trong Kotlin, hãy tham khảo trang tài liệu về dãy ký tự thoát. Ví dụ: nếu bạn muốn một dòng mới trong chuỗi, hãy sử dụng biểu tượng \
trước ký tự n như trong \n
.
Giờ đây, bạn đã học về cách nối các chuỗi và dãy ký tự thoát trong chuỗi. Hãy tìm hiểu về kiểu dữ liệu cuối cùng trong lớp học lập trình này.
Boolean
Kiểu dữ liệu Boolean
sẽ hữu ích khi biến của bạn chỉ có hai giá trị có thể có được biểu thị bằng true
hoặc false
.
Ví dụ: biến thể hiện chế độ trên máy bay của thiết bị đang bật hay tắt, thông báo của một ứng dụng đang bật hay tắt.
- Hãy nhập mã này vào Kotlin Playground. Ở dòng 2 của chương trình này, bạn khai báo biến
Boolean
có tên lànotificationsEnabled
và khởi tạo biến đó với giá trịtrue
. Về mặt kỹ thuật, bạn có thể bỏ qua: Boolean
trong khai báo nên bạn có thể xoá phần này nếu muốn. Ở dòng 3 của chương trình, bạn in ra giá trị của biếnnotificationsEnabled
.
fun main() {
val notificationsEnabled: Boolean = true
println(notificationsEnabled)
}
Hãy chạy chương trình và kết quả này sẽ được in ra:
true
- Thay đổi giá trị ban đầu của
Boolean
thành false ở dòng 2 của chương trình.
fun main() {
val notificationsEnabled: Boolean = false
println(notificationsEnabled)
}
Hãy chạy chương trình và kết quả này sẽ được in ra:
false
- Các kiểu dữ liệu khác có thể được nối với
Strings
. Ví dụ: bạn có thể nốiBooleans
vớiStrings
. Hãy dùng dấu+
để nối (hoặc thêm) giá trị của biến booleannotificationsEnabled
vào cuối chuỗi"Are notifications enabled? "
.
fun main() {
val notificationsEnabled: Boolean = false
println("Are notifications enabled? " + notificationsEnabled)
}
Chạy chương trình để xem kết quả của phép nối. Chương trình sẽ in kết quả này:
Are notifications enabled? false
Có thể thấy rằng bạn có thể đặt biến Boolean
thành giá trị true
hoặc false
. Biến Boolean
cho phép bạn viết mã cho các trường hợp thú vị hơn, trong các trường hợp đó bạn thực thi một số tập lệnh khi biến Boolean
có giá trị true
. Hoặc nếu Boolean
có giá trị false, bạn sẽ bỏ qua các lệnh đó. Bạn có thể tìm hiểu thêm về Booleans
trong lớp học lập trình sau này.
6. Quy ước lập trình
Trong lớp học lập trình trước đây, bạn đã học về Hướng dẫn về quy tắc lập trình bằng Kotlin để viết mã Android một cách nhất quán theo đề xuất của Google cũng như tuân theo các nhà phát triển chuyên nghiệp khác.
Dưới đây là một số quy ước về định dạng và lập trình khác để bạn thực hiện dựa trên các chủ đề mới tìm hiểu:
- Tên biến phải tuân theo quy tắc viết hoa Camel và bắt đầu bằng một chữ cái viết thường.
- Khi khai báo biến, cần có dấu cách sau dấu hai chấm khi chỉ định kiểu dữ liệu.
- Phải có dấu cách trước và sau toán tử như toán tử gán(
=
), phép cộng (+
), phép trừ (-
), phép nhân (*
), phép chia (/
) ) và nhiều toán tử khác.
- Khi viết chương trình phức tạp hơn, bạn sẽ thấy giới hạn 100 ký tự mỗi dòng. Nhờ đó, bạn có thể dễ dàng đọc tất cả mã trong chương trình trên màn hình máy tính mà không cần phải cuộn sang ngang khi đọc mã.
7. Để lại ghi chú trong mã của bạn
Khi viết mã, có một phương pháp hay khác mà bạn nên làm theo là thêm ghi chú để mô tả chức năng của mã. Ghi chú có thể giúp người đọc hiểu mã dễ dàng hơn. Hai dấu gạch chéo lên (//
) cho biết phần văn bản còn lại trên dòng là một ghi chú. Vì vậy, phần văn bản không bị hiểu nhầm là mã. Thường thì bạn nên thêm dấu cách sau hai dấu gạch chéo lên.
// This is a comment.
Ghi chú cũng có thể bắt đầu ở giữa dòng mã. Trong ví dụ này, height = 1
là một câu lệnh lập trình thông thường. Mọi nội dung sau //
hoặc Assume the height is 1 to start with
được hiểu là một ghi chú và không được xem là một phần của mã.
height = 1 // Assume the height is 1 to start with.
Nếu bạn muốn mô tả chi tiết hơn về mã bằng ghi chú dài quá 100 ký tự trên một dòng, hãy ghi chú nhiều dòng. Bắt đầu ghi chú có nhiều dòng với dấu gạch chéo lên (/
) và dấu hoa thị (*
) như sau: /*
. Thêm một dấu hoa thị ở đầu mỗi dòng ghi chú tiếp sau. Cuối cùng, hãy kết thúc ghi chú đó bằng dấu hoa thị và dấu gạch chéo lên */
.
/*
* This is a very long comment that can
* take up multiple lines.
*/
Chương trình này có các ghi chú một dòng và nhiều dòng mô tả những gì đang diễn ra:
/**
* This program displays the number of messages
* in the user's inbox.
*/
fun main() {
// Create a variable for the number of unread messages.
var count = 10
println("You have $count unread messages.")
// Decrease the number of messages by 1.
count--
println("You have $count unread messages.")
}
Như đã đề cập ở trên, bạn có thể thêm các dòng trống vào mã để nhóm các câu lệnh liên quan lại với nhau để làm cho mã dễ đọc hơn.
- Thêm một số ghi chú vào đoạn mã cũ mà bạn đã sử dụng.
- Chạy chương trình để đảm bảo rằng hành vi không thay đổi vì ghi chú không nên ảnh hưởng đến kết quả.
8. Kết luận
Tuyệt vời! Bạn đã tìm hiểu về các biến trong Kotlin, lý do biến lại hữu ích trong quá trình lập trình, cũng như cách tạo, cập nhật và sử dụng các biến đó. Bạn đã thử nghiệm với các kiểu dữ liệu cơ bản khác nhau trong Kotlin, bao gồm kiểu dữ liệu Int
, Double
, String
và Boolean
. Bạn cũng đã tìm hiểu về sự khác biệt giữa từ khoá val
và var
.
Tất cả khái niệm này đều là nền tảng quan trọng trên hành trình trở thành nhà phát triển.
Hẹn gặp bạn trong lớp học lập trình tiếp theo!
Tóm tắt
- Biến là một vùng chứa dữ liệu.
- Bạn phải khai báo biến trước khi sử dụng biến đó.
- Hãy dùng từ khoá
val
để định nghĩa biến chỉ có thể đọc khi biến không thể thay đổi giá trị sau khi gán. - Hãy dùng từ khoá
var
để định nghĩa một biến có thể thay đổi hoặc chỉnh sửa. - Trong Kotlin, bạn nên dùng
val
thay vìvar
khi có thể. - Để khai báo biến, hãy bắt đầu bằng từ khoá
val
hoặcvar
. Sau đó hãy chỉ định tên biến, kiểu dữ liệu và giá trị ban đầu. Ví dụ:val count: Int = 2
. - Với suy luận kiểu dữ liệu, bạn có thể bỏ qua kiểu dữ liệu trong khai báo biến nếu đã cung cấp giá trị ban đầu.
- Một số kiểu dữ liệu Kotlin cơ bản phổ biến bao gồm:
Int
,String
,Boolean
,Float
vàDouble
. - Hãy dùng toán tử gán (
=
) để gán giá trị cho một biến trong quá trình khai báo biến hoặc cập nhật biến. - Bạn chỉ có thể cập nhật một biến đã được khai báo là biến có thể thay đổi (bằng
var
). - Sử dụng toán tử tăng (
++
) hoặc toán tử giảm (--
) để tăng hoặc giảm giá trị của biến số nguyên thêm 1. - Sử dụng biểu tượng
+
để nối các chuỗi với nhau. Bạn cũng có thể nối các biến thuộc các kiểu dữ liệu khác nhưInt
vàBoolean
vớiStrings
.