Dart 組み込み基本型一覧表
| 分類名 | 型識別子 | 記述 / リテラル例 | 簡単な説明 |
|---|---|---|---|
| Numbers(数値) | int、double | int a = 10; double b = 3.14; | 数値は整数・倍精度浮動小数点数の2種類。共通の親クラスは num |
| Strings(文字列) | String | var str = "foxdevelop.com"; | UTF-16文字シーケンスを保存。文字列補間・複数行・生文字列に対応 |
| Booleans(真偽値) | bool | bool flag = true; | 取り得る値は true / false の2つのみ |
| Records(タプルレコード) | レコードリテラル (v1, v2) | var record = (10, "test"); | 要素数固定の複合型。分割代入に対応 |
| Functions(関数) | Function | void fn() {} Function func = ()=>1; | 第一級オブジェクト。変数代入・引数渡し・戻り値として利用可能 |
| Lists(リスト / 配列) | List | var list = [1,2,3]; | 順序付きで重複要素を許可するコレクション。配列と同等 |
| Sets(集合) | Set | var set = {1,2,3}; | 順序なし、要素の重複を許可しないコレクション |
| Maps(キー値マップ) | Map | var map = {"name":"Tom"}; | キーと値のペアで保存する構造。キーは一意 |
| Runes(Unicodeコードポイント) | Runes | Runes("\u{1f600}") | 文字列内部のUnicodeコードポイントを取得する古い方式。公式では characters パッケージの利用を推奨 |
| Null(空値) | Null | Null n = null; | 値は null のみ。Null安全機構の最上位基本型 |
Dart の変数はすべて本質的にオブジェクト(クラスのインスタンス)です。リテラルで簡単に作成するか、対応するコンストラクタを呼び出して初期化できます。
'hello' は文字列リテラル、true は真偽値リテラル;Map() コンストラクタで Map インスタンスを作成します。
言語特殊補助型
組み込み基本型ではないですが、すべて Dart の予約語です。
これらの型は型システム・非同期処理・静的型検査など特殊な役割を担います:
| 型 | 役割説明 |
|---|---|
Object | Null を除くすべての Dart クラスの親クラス |
Enum | すべての列挙型の親クラス |
Future / Stream | 非同期プログラミング専用 |
Iterable | for-in ループ・同期ジェネレータで使用 |
Never | 式が正常に完了しない(常に例外を投げる関数の戻り値に使用) |
dynamic | 静的型検査を無効化。代わりに Object / Object? の使用を推奨 |
void | 戻り値なし。関数の戻り型として頻繁に使用 |
1 Numbers 数値
親クラス:num
数値は2つのサブクラスに分かれます:int(整数)、double(浮動小数点数)。どちらも num を継承
1.1 int 整数
値域の違い(Dart はフロントエンド開発にも対応するためWeb版が存在):
- ネイティブ環境:
-2^63 ~ 2^63 - 1 - Web(JS基盤):
-2^53 ~ 2^53 - 1
小数点なし。10進数、0x 接頭辞の16進数に対応
例
void main() {
// 10進整数
var pageCount = 123;
// 16進数
var hex = 0xDEADBEEF;
// 数値区切りアンダースコア(Dart 3.6以降、可読性向上)
var million = 1_000_000;
var mac = 0x00_14_22_01_23_45;
print(pageCount);
print(hex);
print(million);
print(mac);
}Code language: Dart (dart)
実行結果
123
3735928559
1000000
86469845829
1.2 double 倍精度浮動小数点数
小数点または指数表記を含む
void main() {
var pi = 3.14; // 小数点
var raid = 1.61e5; // 1.61 * 10^5 指数表記
var tiny = 0.000_000_000_02; // 小数のアンダースコア区切り
print(pi);
print(raid);
print(tiny);
}Code language: PHP (php)
3.14
161000.0
2e-11Code language: CSS (css)
1.3 親クラス num
num 型変数は int と double どちらの値も保持可能:
void main() {
num money = 5;
money += 2.5; // 自動的に double に変換、money = 7.5
// int を double に代入すると自動で 1.0 に変換
double zoom = 1;
print(money);
print(zoom);
}Code language: PHP (php)
実行結果
7.5
1.0Code language: CSS (css)
1.4 型相互変換
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); // 小数2桁に丸め → "3.14"
print(one);
print(pi);
print(pi2);
}Code language: JavaScript (javascript)
実行結果
123
3.14
3.14Code language: CSS (css)
1.5 int 固有ビット演算子
シフト演算・ビットAND/OR/XOR・ビット反転は int のみ対応。詳細はこちら:Dart Bitwise and shift operators – FoxDevelop
void main() {
print(3 << 1); // 左シフト 0011 <<1 → 0110
print(3 | 4); // ビットOR
print(3 & 4); // ビットAND
print(~3); // ビット反転
}Code language: PHP (php)
6
7
0
-4
1.6 数値定数(コンパイル時定数)
純粋な数値リテラル、定数同士の四則演算は const で修飾可能
プログラム実行前のコンパイル段階で固定値が計算済み、実行時に値が変わらず再計算不要な値をコンパイル時定数と呼び、const を付けます。
const msPerSec = 1000;
const waitSec = 5;
const waitMs = waitSec * msPerSec; // コンパイル時定数Code language: JavaScript (javascript)
const:コンパイル時定数。プログラム起動前にコンパイラが式を計算し、固定値をバイナリファイルに埋め込む。実行時は読み出すだけで計算しない。
final:実行時定数(実行時に一度値を代入、その後変更不可)。実行時に値を設定でき、2回目の代入は禁止。
1.7 標準搭載数学メソッド
num 型に標準実装。複雑な計算は dart:math を利用
abs()、ceil()、floor()、round() など
num n = -3.6;
print(n.abs()); // 3.6
print(n.ceil()); // -3
print(n.floor()); // -4Code language: PHP (php)
2. String 文字列
UTF-16 コードの文字シーケンスでテキストを表現。シングルクォート、ダブルクォート2種類の記法がある。
2.1 定義方法:シングル / ダブルクォート
var s1 = 'シングルクォート文字列';
var s2 = "ダブルクォート文字列";
// エスケープ文字
var s3 = 'It\'s ok';
var s4 = "It's ok"; // クォート種類を切り替えるとエスケープ不要
Code language: JavaScript (javascript)
文字列内には特殊な意味を持つ文字(ダブルクォート "、改行、バックスラッシュ \)が存在し、そのまま記述すると文字列構文が崩れコンパイラエラーになります。
エスケープ文字 \ は文字の特殊意味を打ち消したり、目に見えない制御文字を出力するために使います。
キーボードのEnter、Tabなどは画面に表示されないため、\t のようなエスケープシーケンスで表現します。下記コードを実行すると動作が分かります。
print("name\tage\tcountry");
print("Jack\t18\tUSA");
print("Lucy\t20\tEgypt");Code language: PHP (php)
2.2 文字列補間 ${式}
- 単純な変数は波括弧を省略可能:
$変数 - オブジェクトは自動的に
.toString()を呼び出す
void main() {
var word = "interpolation";
var str1 = "Dart には $word 機能がある";
var str2 = "大文字:${word.toUpperCase()}";
print(str2); //大文字:INTERPOLATION
}Code language: JavaScript (javascript)
2.3 文字列連結
- 隣接するリテラルは自動連結(改行を挟んでもOK)
+演算子による連結
var s1 = "1行目"
"2行目";
var s2 = "a" + "b";
assert(s1 == "1行目2行目");
assert(s2 == "ab");Code language: JavaScript (javascript)
2.4 複数行文字列:3連クォート ”’ / “””
void main() {
var multi1 = '''
複数行
テキスト
''';
var multi2 = """
ダブル3連クォート複数行
hello foxdevelop.com
""";
print(multi1);
print(multi2);
}Code language: PHP (php)
複数行
テキスト
ダブル3連クォート複数行
hello foxdevelop.comCode language: CSS (css)
3連シングル内にダブルクォート、3連ダブル内にシングルクォートを記述する場合、エスケープ不要:
2.5 生文字列 r”” エスケープ文字を無効化
var raw = r"改行記号 \n は処理されない";
print(raw); // \n がそのまま出力される
Code language: PHP (php)
2.6 const 定数文字列の制限
補間に使用する値はコンパイル時定数(数値・bool・定数文字列)のみ許可。通常変数・コレクションは使用不可
const num cNum = 10;
const bool cBool = true;
const String cStr = "const";
// 正常な定数文字列
const valid = "$cNum $cBool $cStr";
var normalNum = 10;
// 不正:補間に定数以外の変数を含む
// const invalid = "$normalNum";
Code language: JavaScript (javascript)
3. bool 真偽型
インスタンスは true / false の2種類のみ、どちらもコンパイル時定数
Dart は強い型付けルール:数値や文字列などを直接真偽判定に使えず、明示的な比較が必須
void main() {
var emptyStr = "";
print(emptyStr.isEmpty); // 空文字列判定
var zero = 0;
print(zero == 0); // ゼロ判定
var nil = null;
print(nil == null); // null判定
var nan = 0 / 0;
print(nan.isNaN); // 非数値判定
}Code language: PHP (php)
4. Runes & characters Unicode文字処理
- Runes:文字列内部のUnicodeコードポイントを直接取得する古い手法
- 推奨
package:characters:視覚的に1文字となるグラフェムクラスタ(国旗絵文字など)を正しく処理
Unicode エスケープ記法
- 4桁16進数:
\uXXXX - 4桁を超える大きなコードポイント:
\u{16進数}
var heart = "\u2665"; // ♥
var laugh = "\u{1f606}"; // 😆
Code language: JavaScript (javascript)
characters パッケージ例
import 'package:characters/characters.dart';
void main() {
var text = "Hi 🇩🇰";
print(text.characters.last); // デンマーク国旗絵文字を完全出力
}
Code language: JavaScript (javascript)
5. Symbol シンボル型
リフレクション・コード難読化に使用。リテラル記法 #識別子、コンパイル時定数
難読化処理を実行しても Symbol は変更されないため、名称から動的に識別子を参照する場面に適しています。
#userName
#getData
Code language: CSS (css)
6. Null 空値型
取り得る値は null のみ。Null安全機構において Null は独立した最上位型で、すべてのNullable型と互換性があります。
String? name = null;
Null n = null;
Code language: JavaScript (javascript)