Dart eingebaute Typen

Eingebaute Basistypen von Dart – Übersichtstabelle

KategorieTypbezeichnungSchreibweise / LiteralbeispielKurzbeschreibung
Numbers (Zahlen)int, doubleint a = 10; double b = 3,14;Zahlen unterteilen sich in Ganzzahlen und Gleitkommazahlen; gemeinsame Oberklasse ist num
Strings (Zeichenketten)Stringvar str = "foxdevelop.com";Speichert UTF-16-Zeichenfolgen, unterstützt String-Interpolation, mehrzeilige Texte und Rohstrings
Booleans (Wahrheitswerte)boolbool flag = true;Nur zwei mögliche Werte: true / false
Records (Tupel-Datensätze)Record-Literal (v1, v2)var record = (10, "test");Festlanger zusammengesetzter Typ mit mehreren Werten, unterstützt Destrukturierung
Functions (Funktionen)Functionvoid fn() {} Function func = ()=>1;Funktionen sind Objekte erster Klasse: zuweisbar, als Parameter übergebbar, als Rückgabewert nutzbar
Lists (Listen / Arrays)Listvar list = [1,2,3];Geordnete Sammlung mit doppelten Elementen, entspricht Arrays
Sets (Mengen)Setvar set = {1,2,3};Ungeordnete Sammlung ohne doppelte Elemente
Maps (Schlüssel-Wert-Abbildungen)Mapvar map = {"name":"Tom"};Speicherstruktur für Schlüssel-Wert-Paare, Schlüssel müssen eindeutig sein
Runes (Unicode-Codepunkte)RunesRunes("\u{1f600}")Zugriff auf Unicode-Codepunkte auf unterster Ebene; offiziell wird stattdessen das characters-Paket empfohlen
Null (Leerwert)NullNull n = null;Einziger Wert ist null; grundlegender Obertyp des Null-Safety-Systems

Jede Variable in Dart ist im Grunde ein Objekt (eine Instanz einer Klasse). Sie können entweder schnell per Literal erstellt oder über den passenden Konstruktor initialisiert werden.

'hello' ist ein String-Literal, true ein Boolean-Literal; mit dem Konstruktor Map() erstellen Sie eine Map-Instanz.

Spezielle Hilfstypen der Sprache

Sie zählen nicht zu den eingebauten Basistypen, sind aber alle Schlüsselwörter von Dart.

Diese Typen übernehmen spezielle Aufgaben im Typsystem, bei asynchroner Programmierung und statischer Typüberprüfung:

TypBeschreibung der Funktion
ObjectOberklasse aller Dart-Klassen außer Null
EnumOberklasse aller Enumerationen
Future / StreamSpeziell für asynchrone Programmierung
IterableVerwendet für for-in-Schleifen und synchrone Generatoren
NeverAusdruck, der niemals regulär abschließt (meist für Funktionen, die immer eine Ausnahme werfen)
dynamicDeaktiviert statische Typüberprüfung; bevorzugt stattdessen Object / Object?
voidKein Rückgabewert, häufig als Rückgabetyp von Funktionen verwendet

1 Numbers Zahlen

Oberklasse: num

Zahlen unterteilen sich in zwei Unterklassen: int (Ganzzahl) und double (Gleitkommazahl), beide erben von num

1.1 int Ganzzahl

Unterschiedlicher Wertebereich (Dart läuft auch im Frontend, daher gibt es eine Web-Variante):

  • Native Plattformen: -2^63 ~ 2^63 - 1
  • Web (basiert auf JS): -2^53 ~ 2^53 - 1

Kein Dezimalpunkt; unterstützt Dezimal- und Hexadezimalschreibweise mit Präfix 0x

Beispielcode


void main() {
	// Dezimal-Ganzzahl
	var pageCount = 123;
	
	// Hexadezimalzahl
	var hex = 0xDEADBEEF;
	
	// Unterstriche zur Trennung von Ziffern (ab Dart 3.6, bessere Lesbarkeit)
	var million = 1_000_000;
	var mac = 0x00_14_22_01_23_45;
	
	print(pageCount);
	print(hex);
	print(million);
	print(mac);
}Code-Sprache: Dart (dart)

Ausgabe

123
3735928559
1000000
86469845829

1.2 double Gleitkommazahl mit doppelter Genauigkeit

Enthält Dezimalpunkt oder wissenschaftliche Notation

void main() {
	var pi = 3.14; // Dezimalpunkt
	var raid = 1.61e5; // 1,61 * 10^5 wissenschaftliche Notation
	var tiny = 0.000_000_000_02; // Unterstriche bei Dezimalzahlen
	
	print(pi);
	print(raid);
	print(tiny);
}Code-Sprache: PHP (php)
3.14
161000.0
2e-11Code-Sprache: CSS (css)

1.3 Oberklasse num

Variablen vom Typ num können sowohl int als auch double speichern:

void main() {
	num money = 5;
	money += 2.5; // Automatische Umwandlung zu double, money = 7,5
	
	// Zuweisung int an double wandelt automatisch zu 1,0 um
	double zoom = 1;
	
	print(money);
	print(zoom);
}Code-Sprache: PHP (php)

Ausgabe

7.5
1.0Code-Sprache: CSS (css)

1.4 Typumwandlung zwischen Zahlen

void main() {
	// String → int
	var one = int.parse('123');


	// String → double
	var pi = double.parse('3.14');

	// int / double → String
	String intStr = 99.toString();
	String pi2 = 3.14159.toStringAsFixed(2); // Auf 2 Nachkommastellen gerundet → "3.14"

	
	print(one);
	print(pi);
	print(pi2);
}Code-Sprache: JavaScript (javascript)

Ausgabe

123
3.14
3.14Code-Sprache: CSS (css)

1.5 Spezielle Bitoperatoren für int

Nur int unterstützt Bitverschiebung, bitweises UND/ODER/XOR sowie Bitnegation. Mehr Infos: Dart Bitwise and shift operators – FoxDevelop

void main() {
	print(3 << 1);  // Linksverschiebung 0011 <<1 → 0110
	print(3 | 4);   // Bitweises ODER
	print(3 & 4);   // Bitweises UND
	print(~3);       // Bitnegation
}Code-Sprache: PHP (php)
6
7
0
-4

1.6 Zahlenkonstanten (Compile-Time Constant)

Pure Zahlenliterale und Rechenoperationen mit Konstanten können mit const markiert werden

Werte, die bereits in der Kompilierungsphase (noch vor Programmstart) fest berechnet werden und zur Laufzeit unveränderlich sind, heißen Kompilierzeitkonstanten und werden mit const deklariert.

const msPerSec = 1000;
const waitSec = 5;
const waitMs = waitSec * msPerSec; // KompilierzeitkonstanteCode-Sprache: JavaScript (javascript)

const: Kompilierzeitkonstante – der Compiler berechnet den Ausdruck bereits vor Programmausführung und schreibt den festen Wert direkt in die kompilierte Binärdatei; zur Laufzeit wird nur gelesen, keine Berechnung mehr nötig.

final: Laufzeitkonstante – der Wert wird erst beim Ausführen zugewiesen, danach kann er nicht mehr verändert werden.

1.7 Eingebaute mathematische Methoden

Direkt über num verfügbar; komplexere Berechnungen nutzen das Paket dart:math

abs(), ceil(), floor(), round() usw.

num n = -3.6;
print(n.abs()); // 3.6
print(n.ceil()); // -3
print(n.floor()); // -4Code-Sprache: PHP (php)

2. String Zeichenkette

UTF-16-codierte Zeichenfolge zur Darstellung von Text; zwei Schreibweisen: einfache oder doppelte Anführungszeichen.

2.1 Definition: Einfache / doppelte Anführungszeichen

var s1 = 'Zeichenkette mit einfachen Anführungszeichen';
var s2 = "Zeichenkette mit doppelten Anführungszeichen";

// Escape-Zeichen
var s3 = 'It\'s ok';
var s4 = "It's ok"; // Wechselnde Anführungszeichen brauchen kein Escape
Code-Sprache: JavaScript (javascript)

Einige Zeichen in Strings haben eine spezielle Bedeutung (z. B. doppeltes Anführungszeichen ", Zeilenumbruch, Backslash \). Wird sie direkt geschrieben, zerstört sie die String-Struktur und führt zu Compilerfehlern.

Das Escape-Zeichen \ hebt die Sonderfunktion von Zeichen auf oder gibt nicht sichtbare Steuerzeichen aus.

Beispiel: Tasten wie Enter oder Tab sind nicht sichtbar und benötigen Escape-Sequenzen wie \t. Testen Sie folgenden Code zur Verdeutlichung:

  print("name\tage\tcountry");
  print("Jack\t18\tUSA");
  print("Lucy\t20\tEgypt");Code-Sprache: PHP (php)

2.2 String-Interpolation ${Ausdruck}

  • Bei einfachen Variablen können die geschweiften Klammern weggelassen werden: $Variable
  • Objekte rufen automatisch die Methode .toString() auf
void main() {
	var word = "interpolation";
	var str1 = "Dart hat $word";
	var str2 = "Großbuchstaben: ${word.toUpperCase()}";
	print(str2); // Großbuchstaben: INTERPOLATION
}Code-Sprache: JavaScript (javascript)

2.3 String-Verkettung

  1. Benachbarte Literale werden automatisch verkettet (auch über Zeilenumbruch)
  2. Verkettung mit dem Operator +
var s1 = "Erste Zeile"
    "Zweite Zeile";
var s2 = "a" + "b";
assert(s1 == "Erste ZeileZweite Zeile");
assert(s2 == "ab");Code-Sprache: JavaScript (javascript)

2.4 Mehrzeilige Strings: Dreifache Anführungszeichen “‘ / „““

void main() {
	var multi1 = '''
	Mehrzeiliger
	Text
	''';

	var multi2 = """
	Mehrzeiliger Text mit doppelten Dreifachzeichen
	hello foxdevelop.com
	""";
	
	print(multi1);
	print(multi2);

}Code-Sprache: PHP (php)
        Mehrzeiliger
        Text

        Mehrzeiliger Text mit doppelten Dreifachzeichen
        hello foxdevelop.comCode-Sprache: CSS (css)

Einfache Anführungszeichen innerhalb von dreifachen einfachen Anführungszeichen und umgekehrt brauchen kein Escape-Zeichen:

2.5 Rohstrings r““ – keine Auswertung von Escape-Sequenzen

var raw = r"Der Zeilenumbruch \n wird nicht interpretiert";
print(raw); // Gibt \n unverändert aus
Code-Sprache: PHP (php)

2.6 Einschränkungen bei const-String-Konstanten

Interpolierte Inhalte müssen Kompilierzeitkonstanten sein (Zahlen, bool, konstante Strings); normale Variablen oder Collections sind unzulässig.

const num cNum = 10;
const bool cBool = true;
const String cStr = "const";
// Gültiger konstanter String
const valid = "$cNum $cBool $cStr";

var normalNum = 10;
// Ungültig: Interpolation enthält keine Konstante 
// const invalid = "$normalNum";
Code-Sprache: JavaScript (javascript)

3. bool Wahrheitstyp

Nur zwei Instanzen: true / false, beide sind Kompilierzeitkonstanten

Dart folgt strenger statischer Typisierung: Wahrheitswerte lassen sich nicht implizit aus anderen Typen ableiten, explizite Vergleiche sind erforderlich.

void main() {
	var emptyStr = "";
	print(emptyStr.isEmpty); // Leerstring prüfen

	var zero = 0;
	print(zero == 0); // Null prüfen

	var nil = null;
	print(nil == null); // Nullwert prüfen

	var nan = 0 / 0;
	print(nan.isNaN); // Nicht-Zahl prüfen

}Code-Sprache: PHP (php)

4. Runes & characters – Verarbeitung von Unicode-Zeichen

  1. Runes: Zugriff auf die unterliegenden Unicode-Codepunkte, veraltete Lösung
  2. Empfohlen: package:characters zur Verarbeitung visuell vollständiger Zeichen (Grapheme-Cluster, z. B. Flaggen-Emojis)

Unicode-Escape-Syntax

  • 4-stellige Hexadezimal: \uXXXX
  • Große Codepunkte mit mehr als 4 Ziffern: \u{Hexwert}
var heart = "\u2665"; // ♥
var laugh = "\u{1f606}"; // 😆
Code-Sprache: JavaScript (javascript)

Beispiel mit dem characters-Paket

import 'package:characters/characters.dart';
void main() {
  var text = "Hi 🇩🇰";
  print(text.characters.last); // Gibt das vollständige Dänemark-Flaggen-Emoji aus
}
Code-Sprache: JavaScript (javascript)

5. Symbol Symboltyp

Eingesetzt für Reflexion und Code-Verschleierung, Literal-Syntax #Bezeichner, Kompilierzeitkonstante

Verschleierung verändert Symbole nicht; geeignet für dynamische Referenzierung von Bezeichnern über ihren Namen.

#userName
#getData
Code-Sprache: CSS (css)

6. Null Leerwerttyp

Einziger gültiger Wert ist null. Im Null-Safety-System ist Null ein eigenständiger oberster Typ, alle nullable Typen sind kompatibel mit null.

String? name = null;
Null n = null;
Code-Sprache: JavaScript (javascript)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert