Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Примитивные типы данных в Dart
В Dart есть несколько примитивных типов данных, которые используются для работы с базовыми значениями. Давайте разберём каждый.
1. int (целые числа)
Описание: целые числа любого размера
int age = 25;
int temperature = -10;
int hugeNumber = 9223372036854775807; // 64-bit integer
int zero = 0;
// Литералы
int decimal = 123;
int hexadecimal = 0xFF; // 255
int binary = 0b1010; // 10
Операции:
int a = 10;
int b = 3;
print(a + b); // 13 (сложение)
print(a - b); // 7 (вычитание)
print(a * b); // 30 (умножение)
print(a ~/ b); // 3 (целочисленное деление)
print(a % b); // 1 (остаток от деления)
print(a.abs()); // 10 (абсолютное значение)
print(a.isEven); // false (чётное ли)
print(a.isOdd); // true (нечётное ли)
2. double (вещественные числа)
Описание: числа с плавающей точкой (64-bit)
double price = 19.99;
double pi = 3.14159;
double negative = -5.5;
double scientific = 1.23e5; // 123000
// Важно: целое число можно присвоить в double
double from_int = 5; // Автоматически 5.0
Операции:
double a = 10.5;
double b = 3.2;
print(a + b); // 13.7 (сложение)
print(a / b); // 3.28... (деление)
print(a.round()); // 11 (округление)
print(a.floor()); // 10 (округление вниз)
print(a.ceil()); // 11 (округление вверх)
print(a.toStringAsFixed(1)); // "10.5" (форматирование)
print(a.isNaN); // false (is Not a Number)
print((0.0/0).isNaN); // true (NaN)
print(double.infinity); // Бесконечность
3. String (строки)
Описание: последовательность символов
String name = 'John Doe';
String greeting = "Hello, World!";
// Многострочные строки
String multiline = '''This is
a multiline
string''';
// Raw strings (без обработки escape последовательностей)
String path = r'C:\Users\John'; // Backslash не экранируется
// String interpolation (подстановка переменных)
String message = 'Hello, $name!'; // Hello, John Doe!
String calculation = 'Sum: ${5 + 3}'; // Sum: 8
Операции:
String s = 'Flutter';
print(s.length); // 7 (длина)
print(s.toUpperCase()); // FLUTTER
print(s.toLowerCase()); // flutter
print(s.contains('Flu')); // true
print(s.startsWith('Flut')); // true
print(s.endsWith('er')); // true
print(s.substring(0, 4)); // Flut (подстрока)
print(s.split('t')); // [Flu, ter] (разбиение)
print(s.replaceAll('t', 'T')); // FluTTer (замена)
print(s.trim()); // Удаление пробелов
print(s.padLeft(10, '-')); // ---Flutter (левый padding)
4. bool (булевы значения)
Описание: логические значения true или false
bool isActive = true;
bool isEmpty = false;
// Логические операции
bool result1 = true && false; // false (AND)
bool result2 = true || false; // true (OR)
bool result3 = !true; // false (NOT)
// Сравнения возвращают bool
bool isGreater = 5 > 3; // true
bool isEqual = 'a' == 'a'; // true
bool isNotEqual = 1 != 2; // true
5. num (базовый числовой тип)
Описание: общий родительский тип для int и double
num age = 25; // int
num price = 19.99; // double
// num может быть и int, и double
num value = 10; // Воспринимается как int
value = 10.5; // Теперь как double
// Методы num
print(value.abs()); // Абсолютное значение
print(value.round()); // Округление
print(value.toInt()); // Конвертация в int
print(value.toDouble()); // Конвертация в double
6. Comparison операции между примитивами
// Для числовых типов
print(5 > 3); // true
print(5 >= 5); // true
print(3 < 5); // true
print(3 <= 3); // true
print(5 == 5); // true
print(5 != 3); // true
// Для строк
print('a' == 'a'); // true
print('a' != 'b'); // true
print('apple'.compareTo('banana')); // -1 (меньше)
// Для bool
print(true == true); // true
print(true != false); // true
7. Type checking и conversion
// Проверка типа
var value = 42;
print(value is int); // true
print(value is String); // false
// Конвертация типов
String numStr = '123';
int number = int.parse(numStr); // 123
double decimal = double.parse('3.14'); // 3.14
int toStr = 42;
String str = toStr.toString(); // '42'
// Конвертация между числовыми типами
int intVal = 10;
double dblVal = intVal.toDouble(); // 10.0
double dbl = 10.5;
int intFromDbl = dbl.toInt(); // 10
8. Dynamic и var
// dynamic (может быть любой тип)
dynamic value = 42;
value = 'string'; // Это допустимо
value = true; // И это тоже
// var (тип определяется автоматически)
var age = 25; // Dart определит как int
var name = 'John'; // Как String
// Разница: dynamic более свободный, var более типобезопасный
9. Таблица примитивных типов
| Тип | Размер | Диапазон | Пример |
|---|---|---|---|
| int | 64 bits | -2^63 до 2^63-1 | 42, -10, 0 |
| double | 64 bits (IEEE 754) | ±1.7976931348623157e+308 | 3.14, -5.5 |
| String | переменный | любые символы | 'hello', "world" |
| bool | 1 bit | true, false | true, false |
| num | 64 bits | зависит от int/double | 42, 3.14 |
10. Практические примеры использования
// Калькулятор
int a = 10;
int b = 5;
print('${a} + ${b} = ${a + b}');
print('${a} * ${b} = ${a * b}');
// Информация о пользователе
String username = 'john_doe';
int age = 28;
double height = 1.75;
bool isActive = true;
print('User: $username, Age: $age, Height: ${height}m, Active: $isActive');
// Проверка данных
String input = '123';
try {
int number = int.parse(input);
if (number > 0) {
print('Положительное число: $number');
}
} catch (e) {
print('Ошибка: невалидное число');
}
// Работа со строками
String sentence = 'Flutter is amazing';
print('Длина: ${sentence.length}'); // 18
print('Большие буквы: ${sentence.toUpperCase()}');
print('Слова: ${sentence.split(' ')}'); // [Flutter, is, amazing]
Ключевые моменты
✅ Основные примитивные типы: int, double, String, bool, num
✅ int и double наследуют num
✅ Строки immutable (неизменяемы)
✅ Dart типобезопасен: нельзя смешивать типы без конвертации
✅ null-safety: можно использовать int? для nullable типов
// Null-safety примеры
int? nullable = null; // Это допустимо
int nonNullable = 5; // Не может быть null
String? message = 'hello'; // Может быть null или string
✅ Конвертация типов важна при работе с API и парсингом данных
Примитивные типы — основа любой программы на Dart/Flutter!