← Назад к вопросам

Перечисли примитивные типы данных

1.0 Junior🔥 271 комментариев
#Dart

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Примитивные типы данных в 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. Таблица примитивных типов

ТипРазмерДиапазонПример
int64 bits-2^63 до 2^63-142, -10, 0
double64 bits (IEEE 754)±1.7976931348623157e+3083.14, -5.5
Stringпеременныйлюбые символы'hello', "world"
bool1 bittrue, falsetrue, false
num64 bitsзависит от int/double42, 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!