Các kiểu dữ liệu là đặc điểm cơ bản quan trọng nhất của ngôn ngữ lập trình. Trong Dart, kiểu dữ liệu của biến được xác định bằng giá trị của nó. Các biến được sử dụng để lưu trữ các giá trị và dự trữ vị trí bộ nhớ. Kiểu dữ liệu chỉ định kiểu giá trị nào sẽ được lưu trữ bởi biến. Mỗi biến có kiểu dữ liệu của nó. Dart là một loại ngôn ngữ tĩnh, có nghĩa là các biến không thể sửa đổi.
Các viết liên quan:
Kiểu dữ liệu nguyên thủy (Primitive data types) trong Dart
Cấu trúc cú pháp và ví dụ của các kiểu dữ liệu nguyên thủy (Primitive data types) trong Dart:
- Kiểu số nguyên (Integer):
Cú pháp: int
Ví dụ:
int age = 25; int quantity = -10;
- Kiểu số thực (Double):
Cú pháp: double
Ví dụ:
double pi = 3.14; double temperature = 25.5;
- Kiểu chuỗi (String):
Cú pháp: String
Ví dụ:
String name = "John Doe"; String message = 'Hello, Dart!';
- Kiểu boolean (Boolean):
Cú pháp: bool
Ví dụ:
bool isTrue = true; bool isFalse = false;
- Kiểu ký tự (Character):
Cú pháp: String
(đại diện cho một ký tự duy nhất)
Ví dụ:
String grade = 'A'; String symbol = '@';
- Kiểu null (Null):
Cú pháp: Null
Ví dụ:
int? nullableValue = null; String? nullableString = null;
Các kiểu dữ liệu nguyên thủy trong Dart được sử dụng để lưu trữ các giá trị cơ bản như số nguyên, số thực, chuỗi, boolean và ký tự. Kiểu null được sử dụng để đại diện cho giá trị null. Bạn có thể khai báo biến với các kiểu dữ liệu nguyên thủy và gán giá trị tương ứng cho chúng.
Lưu ý rằng trong Dart, các kiểu dữ liệu nguyên thủy không phải là các đối tượng và không hỗ trợ các phương thức và thuộc tính như trong hướng đối tượng.
Xem thêm Các kiểu dữ liệu trong Swift
Kiểu dữ liệu danh sách (List)
Cấu trúc cú pháp và ví dụ về kiểu dữ liệu danh sách (List) trong Dart:
- Khai báo danh sách:
- Cú pháp:
List<kiểu_dữ_liệu> tên_danh_sách = [giá_trị1, giá_trị2, ...];
- Ví dụ:
- Cú pháp:
List<int> numbers = [1, 2, 3, 4, 5]; List<String> names = ['Alice', 'Bob', 'Charlie']; List<double> prices = [9.99, 19.99, 29.99];
- Truy cập phần tử trong danh sách:
- Cú pháp:
tên_danh_sách[index]
- Ví dụ:
- Cú pháp:
print(numbers[0]); // Output: 1 print(names[1]); // Output: Bob print(prices[2]); // Output: 29.99
- Thay đổi giá trị phần tử trong danh sách:
- Cú pháp:
tên_danh_sách[index] = giá_trị_mới
- Ví dụ:
- Cú pháp:
numbers[0] = 10; names[2] = 'David'; prices[1] = 15.99;
- Độ dài của danh sách:
- Cú pháp:
tên_danh_sách.length
- Ví dụ:
- Cú pháp:
print(numbers.length); // Output: 5 print(names.length); // Output: 3 print(prices.length); // Output: 3
- Thêm phần tử vào danh sách:
- Sử dụng phương thức
add()
:
- Sử dụng phương thức
numbers.add(6); names.add('Eve'); prices.add(39.99);
- Xóa phần tử khỏi danh sách:
- Sử dụng phương thức
removeAt()
hoặcremove()
:
- Sử dụng phương thức
numbers.removeAt(1); // Xóa phần tử ở vị trí index 1 names.remove('Alice'); // Xóa phần tử có giá trị 'Alice' prices.remove(9.99); // Xóa phần tử có giá trị 9.99
Kiểu dữ liệu danh sách (List) trong Dart được sử dụng để lưu trữ và quản lý các tập hợp các phần tử có cùng kiểu dữ liệu. Bạn có thể truy cập và thay đổi giá trị của phần tử trong danh sách, thêm và xóa phần tử khỏi danh sách. Độ dài của danh sách cũng có thể được lấy ra bằng cách sử dụng thuộc tính length
.
Xem thêm numpy.random () bằng Python
Kiểu dữ liệu bộ (Tuple)
Cấu trúc cú pháp và ví dụ về kiểu dữ liệu bộ (Tuple) trong Dart:
- Khai báo bộ:
- Cú pháp:
Tuple<kiểu_dữ_liệu1, kiểu_dữ_liệu2, ...> tên_bộ = Tuple<kiểu_dữ_liệu1, kiểu_dữ_liệu2, ...>(giá_trị1, giá_trị2, ...);
- Ví dụ:
- Cú pháp:
Tuple2<int, String> person = Tuple2<int, String>(25, 'John Doe'); Tuple3<String, double, bool> data = Tuple3<String, double, bool>('example', 3.14, true);
- Truy cập phần tử trong bộ:
- Cú pháp:
tên_bộ.itemX
(với X là vị trí phần tử bắt đầu từ 1) - Ví dụ:
- Cú pháp:
print(person.item1); // Output: 25 print(person.item2); // Output: John Doe print(data.item1); // Output: example print(data.item2); // Output: 3.14 print(data.item3); // Output: true
- Thay đổi giá trị phần tử trong bộ:
- Bộ là không thay đổi (immutable), nghĩa là không thể thay đổi giá trị của phần tử sau khi khai báo.
- Lấy số lượng phần tử trong bộ:
- Cú pháp:
tên_bộ.length
- Ví dụ:
- Cú pháp:
print(person.length); // Output: 2 print(data.length); // Output: 3
Kiểu dữ liệu bộ (Tuple) trong Dart cho phép bạn nhóm các giá trị có kiểu dữ liệu khác nhau lại thành một đơn vị. Bạn có thể truy cập và lấy giá trị của từng phần tử trong bộ bằng cách sử dụng thuộc tính itemX
, với X là vị trí phần tử. Tuy nhiên, giá trị của phần tử trong bộ là không thể thay đổi sau khi khai báo. Độ dài của bộ cũng có thể được lấy ra bằng cách sử dụng thuộc tính length
.
Kiểu dữ liệu bảng (Map)
Cấu trúc cú pháp và ví dụ về kiểu dữ liệu bảng (Map) trong Dart:
- Khai báo bảng:
- Cú pháp:
Map<kiểu_key, kiểu_value> tên_bảng = {key1: value1, key2: value2, ...};
- Ví dụ:
- Cú pháp:
Map<String, int> ages = {'Alice': 25, 'Bob': 30, 'Charlie': 35}; Map<int, String> students = {1: 'John', 2: 'Emily', 3: 'Michael'};
- Truy cập giá trị trong bảng:
- Cú pháp:
tên_bảng[key]
- Ví dụ:
- Cú pháp:
dartCopy codeprint(ages['Alice']); // Output: 25 print(students[2]); // Output: Emily
- Thay đổi giá trị trong bảng:
- Cú pháp:
tên_bảng[key] = giá_trị_mới
- Ví dụ:
- Cú pháp:
ages['Bob'] = 32; students[3] = 'Sophia';
- Độ dài của bảng:
- Cú pháp:
tên_bảng.length
- Ví dụ:
- Cú pháp:
print(ages.length); // Output: 3 print(students.length); // Output: 3
- Thêm cặp key-value vào bảng:
- Sử dụng phương thức
put()
:
- Sử dụng phương thức
ages.putIfAbsent('David', () => 28); students.putIfAbsent(4, () => 'Olivia');
- Xóa cặp key-value khỏi bảng:
- Sử dụng phương thức
remove()
:
- Sử dụng phương thức
ages.remove('Charlie'); students.remove(2);
Kiểu dữ liệu bảng (Map) trong Dart được sử dụng để lưu trữ dữ liệu dưới dạng các cặp key-value. Bạn có thể truy cập và thay đổi giá trị bằng cách sử dụng key tương ứng. Độ dài của bảng cũng có thể được lấy ra bằng cách sử dụng thuộc tính length
. Bạn cũng có thể thêm cặp key-value mới vào bảng và xóa cặp key-value khỏi bảng bằng cách sử dụng các phương thức tương ứng.
Kiểu dữ liệu hằng số (Constant)
Cấu trúc cú pháp và ví dụ về kiểu dữ liệu hằng số (Constant) trong Dart:
- Khai báo hằng số:
- Cú pháp:
static const kiểu_dữ_liệu tên_hằng_số = giá_trị;
- Ví dụ:
- Cú pháp:
static const int maxAge = 100; static const double pi = 3.14; static const String appName = 'MyApp';
- Truy cập hằng số:
- Hằng số có thể được truy cập trực tiếp bằng tên của nó.
- Ví dụ:
print(maxAge); // Output: 100 print(pi); // Output: 3.14 print(appName); // Output: MyApp
Lợi ích của hằng số:
Bảo đảm rằng giá trị không thay đổi trong quá trình chạy chương trình.
Sử dụng để định nghĩa các giá trị không thay đổi như các hằng số toán học, giá trị mặc định, tên ứng dụng, v.v.
Kiểu dữ liệu hằng số (Constant) trong Dart được sử dụng để định nghĩa các giá trị không thay đổi trong quá trình chạy chương trình. Bạn có thể khai báo hằng số bằng cách sử dụng từ khóa static const
và gán giá trị cho nó. Hằng số có thể được truy cập trực tiếp bằng tên của nó và không thể thay đổi giá trị sau khi được gán.
Kiểu dữ liệu nullable (Nullable)
Cấu trúc cú pháp và ví dụ về kiểu dữ liệu nullable (Nullable) trong Dart:
- Khai báo kiểu dữ liệu nullable:
- Cú pháp:
kiểu_dữ_liệu? tên_biến;
- Ví dụ:
- Cú pháp:
int? age; String? name; double? height;
- Gán giá trị cho biến nullable:
- Biến nullable có thể gán giá trị bình thường hoặc giá trị null.
- Ví dụ:
dartCopy codeage = 25; name = null; height = 1.75;
- Truy cập giá trị của biến nullable:
- Trước khi sử dụng giá trị của biến nullable, cần kiểm tra xem nó có giá trị null hay không.
- Có thể sử dụng điều kiện
if
hoặc toán tử?.
để truy cập giá trị. - Ví dụ:
if (age != null) { print(age); } print(name?.length);
- Sử dụng toán tử null-aware để gán giá trị mặc định cho biến nullable:
- Cú pháp:
biến_nullable ?? giá_trị_mặc_định
- Ví dụ:
- Cú pháp:
int actualAge = age ?? 0; String actualName = name ?? 'Unknown';
- Kiểm tra kiểu dữ liệu nullable:
- Sử dụng toán tử
is
hoặcis!
để kiểm tra kiểu dữ liệu nullable. - Ví dụ:
- Sử dụng toán tử
if (age is int?) { print('age is nullable int'); } if (name is! String?) { print('name is not nullable String'); }
Kiểu dữ liệu nullable (Nullable) trong Dart được sử dụng khi bạn muốn khai báo biến có thể chứa giá trị null. Bạn có thể khai báo biến nullable bằng cách sử dụng dấu chấm hỏi (?
) sau kiểu dữ liệu. Biến nullable có thể gán giá trị bình thường hoặc giá trị null. Trước khi sử dụng giá trị của biến nullable, cần kiểm tra xem nó có giá trị null hay không để tránh lỗi. Bạn cũng có thể sử dụng toán tử null-aware để gán giá trị mặc định cho biến nullable. Đồng thời, bạn có thể kiểm tra kiểu dữ liệu của biến nullable bằng cách sử dụng toán tử is
hoặc is!
.
Kiểu dữ liệu động (Dynamic)
Cấu trúc cú pháp và ví dụ về kiểu dữ liệu động (Dynamic) trong Dart:
- Khai báo kiểu dữ liệu động:
- Cú pháp:
dynamic tên_biến;
- Ví dụ:
- Cú pháp:
dynamic value;
- Gán giá trị cho biến động:
- Biến động có thể gán bất kỳ giá trị nào, bất kể kiểu dữ liệu.
- Ví dụ:
value = 10; value = 'Hello'; value = true;
- Truy cập giá trị của biến động:
- Không có kiểm tra kiểu dữ liệu tự động cho biến động.
- Cần chắc chắn rằng các phép toán hoặc truy cập đúng kiểu dữ liệu của giá trị hiện tại.
- Ví dụ:
print(value + 5); // Phép toán số học print(value.length); // Truy cập thuộc tính của chuỗi
Lợi ích của kiểu dữ liệu động:
- Cho phép gán và thay đổi kiểu dữ liệu một cách linh hoạt.
- Thuận tiện trong việc làm việc với dữ liệu đa dạng hoặc khi không biết trước kiểu dữ liệu cụ thể.
Kiểu dữ liệu động (Dynamic) trong Dart cho phép bạn khai báo biến mà không chỉ định kiểu dữ liệu cụ thể. Bạn có thể gán bất kỳ giá trị nào cho biến động, bất kể kiểu dữ liệu. Tuy nhiên, khi làm việc với biến động, bạn cần chắc chắn rằng các phép toán hoặc truy cập đúng kiểu dữ liệu của giá trị hiện tại để tránh lỗi. Kiểu dữ liệu động có lợi thế là linh hoạt và thuận tiện khi làm việc với dữ liệu đa dạng hoặc khi không biết trước kiểu dữ liệu cụ thể. Tuy nhiên, cần hết sức cẩn thận khi sử dụng kiểu dữ liệu động để tránh các vấn đề liên quan đến kiểu dữ liệu và kiểm tra kiểu tự động.
Xem thêm các kiểu dữ liệu trong c++ là gì