Biến và kiểu dữ liện trong Dart
- 11-05-2024
- Toanngo92
- 0 Comments
Mục lục
Hiểu về Các Loại Dữ Liệu trong Dart
Biến được sử dụng trong lập trình để lưu giữ các giá trị được sử dụng trong một chương trình.
Loại dữ liệu là một phân loại xác định loại giá trị mà một biến sẽ chứa. Khi giá trị mà một biến nhất định giữ được xác định, các phép toán như toán học, logic hoặc quan hệ được sử dụng trên biến đó.
Nói một cách rõ ràng hơn, các loại dữ liệu xác định loại các phép toán có thể được thực hiện trên các biến.
Bảng bên dưới hiển thị các loại dữ liệu cụ thể của Dart và các từ khóa tương ứng có thể được sử dụng cùng với các loại dữ liệu đó.
Loại dữ liệu | Từ khoá |
Number | int, double, num |
String | String |
Booleans | bool |
List | List |
Map | Map |
Constants | const |
Dynamic | dynamic |
Var | var |
Number
Loại dữ liệu Number trong Dart được sử dụng bởi một biến để lưu giữ một giá trị số. Nếu một biến được phân loại là Number, thì nó chỉ lưu giữ một giá trị số. Số được phân loại thành hai loại.
Dưới đây là các từ khóa Dart cho loại dữ liệu Number:
int
: Đại diện cho các số nguyên. Nó được chỉ định và khai báo bằng từ khóa int. Một số nguyên được phân bổ bốn byte trong bộ nhớ và có thể có cả các giá trị dương và âm không thập phân.
Ví dụ:
int price = 450;
double: Loại dữ liệu double đại diện cho các số thực 64-bit. Tám byte được phân bổ cho mỗi biến double. Nếu một biến double được gán một giá trị số nguyên, giá trị số nguyên đó sẽ được ép kiểu và chuyển thành double.
Ví dụ:
double num1 = 5.5;
String
Loại dữ liệu String đại diện cho việc kết hợp của một số ký tự. Một giá trị cho biến được khai báo là một Chuỗi sẽ được đặt trong dấu ngoặc đơn hoặc dấu ngoặc kép. Khai báo một biến thuộc loại này có thể được thực hiện bằng từ khóa string. Điều quan trọng cần lưu ý là loại dữ liệu String tuân theo chuỗi biến đổi Unicode 16-bit (UTF-16). UTF-16 là một chuỗi biến đổi của Unicode trong đó mỗi ký tự được tạo thành từ một hoặc hai phần tử 16-bit.
Boolean
Loại dữ liệu Boolean có thể giữ một giá trị ‘true’ hoặc ‘false’. Biến được chỉ định với Boolean được khai báo bằng từ khóa bool
. Chúng thường được sử dụng trong các câu lệnh quyết định.
bool value = true;
List
Loại dữ liệu List được sử dụng để đại diện cho một danh sách các thực thể hoặc vật thể bằng một biến duy nhất. Danh sách này chỉ có thể giữ một nhóm các mục có thứ tự. Một điều quan trọng khác cần lưu ý là List sẽ có các giá trị được phân tách khỏi nhau bằng dấu phẩy và được bao quanh bằng dấu ngoặc vuông [].
Ví dụ:
var marks = new List(2);
marks[0] = 72;
marks[1] = 63;
Dưới đây là các phân loại của Danh sách:
Ví dụ về Fixed Length List: | Ví dụ về Growable List: |
var marks = List.filled (2,0); | var marks = [10,20]; |
Map
Loại dữ liệu Map được sử dụng để đại diện cho dữ liệu dưới dạng cặp key và value. Các mục được lưu trữ trong loại này chỉ có thể được truy cập bằng cách sử dụng key liên kết được cung cấp cho đối tượng Map.
Một biến Map nằm trong dấu ngoặc nhọn {} có mỗi cặp key-value được phân tách khỏi nhau bằng dấu phẩy. Trong Dart, Map có thể được khai báo bằng cách sử dụng các hàm tạo Map hoặc Map literals.
Dưới đây là các loại biểu đồ được sử dụng phổ biến nhất:
Dynamic
Loại dữ liệu Dynamic, như đã chỉ ra bởi tên, là động trong tính chất và không chọn cách khởi tạo một giá trị tại thời điểm khai báo. Một biến được khai báo là Dynamic có thể lưu trữ dữ liệu của bất kỳ loại nào.
Giá trị được gán cho một biến có kiểu dynamic có thể được thay đổi tại bất kỳ điểm nào. Một biến được phân loại là Dynamic được khai báo bằng từ khóa dynamic.
Constants
Các hằng số Dart là các đối tượng không thể thay đổi giá trị của chúng hoặc sửa đổi trong quá trình thực thi chương trình. Không thể gán lại một hằng số sau khi được khởi tạo ban đầu. Nó phải được khởi tạo khi được khai báo.
Dưới đây là các từ khóa được sử dụng để tạo các hằng số trong Dart:
- Từ khóa
final
được sử dụng để cố định các giá trị của biến và không thể thay đổi trong tương lai. - Từ khóa
const
trong Dart hoạt động hoàn toàn giống như từ khóa final. Sự khác biệt duy nhất giữafinal
vàconst
làconst
làm cho biến trở thành hằng số từ thời gian biên dịch.
Mảng
Một mảng là một trong những loại dữ liệu phổ biến nhất được sử dụng để đại diện cho một tập hợp dữ liệu trong Dart. Mảng được biểu diễn bằng List trong Dart.
Một List là một tập hợp các phần tử cùng loại dữ liệu. Một phần tử trong List có thể được truy cập bằng cách sử dụng số chỉ mục của nó.
Bảng bên dưới mô tả biểu diễn của một List.
Identifier | Index | Value |
my_array | 0 | 10 |
my_array | 1 | 14 |
my_array
là biến đại diện cho mảng, đó là một tập hợp các mục. Bộ sưu tập cụ thể này có chứa 10 và 14. Một chỉ mục được sử dụng để tham chiếu đến mỗi phần tử của mảng. Giá trị chỉ mục bắt đầu từ số không để đại diện cho phần tử đầu tiên và đi từ 0 đến n-1, trong đó n là phần tử cuối cùng trong mảng. Do đó, đối với một mảng có kích thước 5, chỉ mục sẽ từ 0 đến 4.
Biến trong Dart
Khi tạo một biến trong Dart, một phần không gian được phân bổ cho biến cụ thể đó bởi trình biên dịch Dart.
Dưới đây là các từ khóa được sử dụng để khai báo biến trong Dart:
Tạo một Biến Bằng Từ Khóa var
Các nhà phát triển có thể sử dụng từ khóa var
để gán các biến trong Dart. Trình biên dịch Dart sẽ suy luận loại dữ liệu được gán dựa trên giá trị được cung cấp với từ khóa var
, Đoạn mã bên dưới cho thấy cách khai báo biến với var
và gán các loại dữ liệu cụ thể cho các biến đã khai báo.
void main() {
var number1 = 10;
var number2 = 5.5;
var name = 'Alexa';
print(name);
print(number1);
print(number2);
}
Trong đoạn mã trên ba biến var
được khai báo. Biến name
giữ một giá trị chuỗi trong khi biến number1
giữ một giá trị số nguyên. Cuối cùng, biến number2
giữ một giá trị số thực. Hàm được sử dụng để in ra ba biến là hàm print()
trong Dart.
Nhấp chuột phải vào dự án trong cửa sổ Dự án và nhấp vào Chạy.
Hình bên dưới cho thấy kết quả được tạo ra trong cửa sổ terminal của Android Studio sau khi thực thi Đoạn mã trên.
Alexa
10
5.5
Process finished with exit code 0
Tính chất của từ khóa var
là một khi một loại dữ liệu được gán trong quá trình khởi tạo cho một biến var
, thì nó không thể được sửa đổi sau này. Điều này bởi vì loại được suy luận bởi hệ thống Dart. Trong Đoạn mã bên dưới, một lỗi có thể được thấy tại biến tocheckerror. Quan sát cho thấy biến tocheckerror được khởi tạo thành một Chuỗi. Loại Chuỗi được gán cho biến không thể thay đổi thành số nguyên ở đây, do đó, đoạn mã này gây ra lỗi.
Hãy xem đoạn mã sau:
void main() {
var tocheckerror = 'tallexa';
tocheckerror = 09;
}
Hình bên dưới cho thấy kết quả cho Đoạn mã trên.
Error: A value of type 'int' can't be assigned to a variable of type 'String'.
Tạo một Biến Bằng Từ Khóa String
Từ khóa string được sử dụng để gán loại dữ liệu Chuỗi cho một biến. Chuỗi đại diện cho một chuỗi các ký tự cá nhân. Thực tế là khai báo biến như một Chuỗi và sau đó, gán một giá trị cụ thể tương ứng. Hơn nữa, việc gán lại biến cho một giá trị khác cũng được phép và điều này được thể hiện trong Đoạn mã bên dưới.
void main() {
String name = 'Shannon';
print(name);
name = 'Julian';
print(name);
}
Trong Đoạn mã trên, một biến Chuỗi được gọi là name được khai báo. Biến sau đó được khởi tạo với ‘Shannon’ và được in ra. Sau đó, nó được gán lại với một giá trị khác và được in ra một lần nữa bằng cách sử dụng hàm print()
.
Tạo một Biến Bằng Từ Khóa int
Các biến được khai báo bằng từ khóa int đại diện cho một số không thập phân có thể là số dương hoặc số âm. Việc khai báo một biến làm số nguyên và gán giá trị tương ứng cho nó là hoàn toàn khả thi. Hơn nữa, việc cấp phát lại cùng một biến là hoàn toàn có thể và điều này được thể hiện trong Đoạn mã bên dưới.
void main() {
int num1 = 5;
print(num1);
num1 = 10;
print(num1);
}
Trong Đoạn mã trên một biến int num1
được đầu tiên khai báo. Sau đó, nó được khởi tạo với giá trị 5 và sau đó được in ra. Cùng một biến sau đó được cấp phát lại giá trị 10 và được in ra trên bảng điều khiển.
Lưu ý rằng một giá trị thập phân không thể được gán cho một biến số nguyên. Điều này được minh họa trong Đoạn mã bên dưới.
void main() {
int num2 = 5.5;
}
Khi thực thi đoạn mã trên, một lỗi sẽ được nhận được vì một giá trị double được gán cho một biến kiểu int.
Hình bên dưới thể hiện kết quả cho Đoạn mã trên:
Kết quả cho Đoạn mã trên cho thấy rằng một giá trị kiểu ‘double’ không thể được gán cho một biến kiểu ‘int’.
Tạo Một Biến Sử Dụng Từ Khóa Dynamic
Biến được khai báo bằng từ khóa dynamic không có bất kỳ loại dữ liệu cố định nào.
Đoạn mã bên dưới cho thấy cách khai báo một biến với từ khóa dynamic và gán một số giá trị cho các biến đã khai báo.
void main() {
dynamic name = 'rubel';
dynamic number1 = 10;
dynamic number2 = 5.5;
print(name);
print(number1);
print(number2);
}
Trong Đoạn mã trên, ba biến dynamic được khai báo. Biến đã được khai báo là name giữ một giá trị chuỗi trong khi biến number
giữ một giá trị số nguyên và cuối cùng, number2
giữ một giá trị số thực. Tất cả ba biến được in ra bằng cách sử dụng hàm print()
trong Dart.
Hình bên dưới hiển thị kết quả trên terminal khi thực thi chương trình trong Đoạn mã trên.
Lưu ý rằng các giá trị được gán cho một biến dynamic có thể được thay đổi hoặc sửa đổi ở bất kỳ thời điểm nào. Đoạn mã bên dưới cho thấy cách một biến ban đầu giữ một giá trị số thực sau đó được thay đổi để giữ một chuỗi thay vào đó.
Điều này được thực hiện bằng cách tự động ép kiểu trong ngôn ngữ Dart. Do đó, giá trị được tự động chuyển đổi kiểu dữ liệu được gán.
void main() {
dynamic changingDataType = 5.5;
print(changingDataType);
changingDataType = 'Jimmy';
print(changingDataType);
}
Hình bên dưới hiển thị kết quả trên terminal khi thực thi mã trong Đoạn mã trên.
Trong đoạn mã trên, giá trị của biến dynamic changingDataType đã được thay đổi từ một giá trị số thực sang một giá trị chuỗi.
Tạo Một Biến Sử Dụng Từ Khóa Final
Từ khóa final
được sử dụng để tạo các đối tượng không thể thay đổi trong Dart. Biến với từ khóa final
được sử dụng khi người dùng muốn luôn lưu trữ cùng một giá trị và không muốn nó thay đổi.
final tên_biến = giá_trị_biến;
Đoạn mã bên dưới cho thấy cách khai báo một biến khi sử dụng từ khóa final
và cho thấy cách gán một giá trị cho cùng một biến.
void main() {
final name = 'David';
print(name);
}
Trong đoạn mã trên, biến name
được khai báo với final
và được khởi tạo với giá trị ‘David’. Sau đó, giá trị được in ra trên terminal.
Hình bên dưới hiển thị kết quả trên terminal khi chương trình trong Đoạn mã trên được thực thi.
Một điều quan trọng cần nhớ là giá trị được gán cho một biến final
không thể được sửa đổi sau khi nó được gán. Điều này được minh họa trong Đoạn mã bên dưới.
void main() {
final name = 'David';
}
Khi thực thi chương trình trong Đoạn mã trên, một lỗi được tạo ra vì có một cố gắng cấp phát lại biến name
.
Hình bên dưới hiển thị kết quả trên terminal khi chương trình trong Đoạn mã trên được thực thi.
Tạo Một Biến Sử Dụng Từ Khóa const
Từ khóa const
được sử dụng để cho người dùng biết rằng giá trị được lưu trữ trong biến là hằng số và không thể thay đổi trong quá trình thực thi chương trình. Nếu giá trị cho biến đã nêu được biết tại thời điểm biên dịch, thì ‘const
‘ có thể được sử dụng thay vì ‘final
‘. Sự khác biệt duy nhất giữa từ khóa final
và const
là final
là một hằng số thời gian chạy, điều này có nghĩa là giá trị của nó có thể được gán tại thời gian chạy thay vì thời gian biên dịch.
Đoạn mã bên dưới cho thấy cách khai báo một biến với const
và đặt một giá trị cho biến đã khai báo.
void main() {
const name = 'Sylvia';
print(name);
}
Trong đoạn mã trên, một biến được gọi là name
được khai báo với từ khóa const
và được khởi tạo với giá trị ‘Sylvia
‘. Giá trị sau đó được in ra trên terminal.
Hình bên dưới hiển thị kết quả trên terminal khi chương trình trong đoạn mã trên được thực thi.
Lưu ý: phải nhớ rằng giá trị được gán cho một biến const
không thể được thay đổi hoặc sửa đổi sau khi đã được chỉ định và việc làm như vậy sẽ gây ra lỗi.
void main() {
const name = 'Sylvia';
name = 'Sam';
}
Trong Trong đoạn mã trên, một lỗi được nhận được khi cố gắng cấp phát lại biến const
.
Hình bên dưới hiển thị kết quả trên terminal khi chương trình trong mã trên được thực thi.
Bài tập
1.Viết một chương trình Dart với các biến tên đầu tiên, tên cuối cùng, tuổi, cân nặng, chiều cao, và một danh sách bạn của bạn. Sử dụng định dạng chuỗi và in tất cả các biến ra console. Một mẫu kết quả được đưa ra.
2. Quan sát kỹ đoạn mã đã cho. Đoán các biến nào có thể được khai báo là const, final và var nhưng vẫn tạo ra một chương trình hợp lệ.
3. Công ty Atlantis Scientific Systems ở Colorado, Mỹ, là một phòng thí nghiệm tính toán khoa học tiên tiến thu thập dữ liệu về các yếu tố và hiện tượng khác nhau. Nó thực hiện một lượng lớn tính toán và nghiên cứu khoa học trên dữ liệu đã tích lũy. Là một trong các nhà nghiên cứu tại đó, bạn phải thu thập và lưu trữ các dữ liệu sau được cung cấp:
- Nhiệt độ Tối thiểu và Tối đa của địa phương
- Nhiệt độ Trung bình của địa phương
- Dân số của thị trấn và tiểu bang
- Xem xét xem thành phố có phải là một thành phố đại đô thị hay không (dữ liệu true/false)
- Tỷ lệ học vị trung bình của thành phố
- Trình độ học vị trung bình của dân số (Cử nhân/Thạc sĩ và còn nhiều hơn)
Bạn quyết định viết một chương trình Dart để thực hiện điều này. Kiểm tra kết quả bằng cách biên dịch chương trình và thực thi nó thông qua Android Studio.