Dart 내장 타입

Dart 내장 기본 타입 표

분류명타입 식별자작성 / 리터럴 예시간략 설명
Numbers(숫자)int、doubleint a = 10; double b = 3.14;숫자는 정수, 배정밀 부동소수점 두 가지로 나뉘며 공통 부모 클래스는 num
Strings(문자열)Stringvar str = "foxdevelop.com";UTF-16 문자 시퀀스를 저장하며 문자열 보간, 다중 행, 원시 문자열을 지원
Booleans(불리언)boolbool flag = true;가질 수 있는 값은 true / false 단 두 개
Records(튜플 레코드)레코드 리터럴 (v1, v2)var record = (10, "test");길이가 고정된 다중 값 복합 타입, 구조 분해 할당 지원
Functions(함수)Functionvoid fn() {} Function func = ()=>1;일급 객체로 변수에 할당하거나 매개변수로 전달, 반환값으로 사용 가능
Lists(리스트 / 배열)Listvar list = [1,2,3];순서가 있고 중복 요소를 허용하는 컬렉션, 배열과 동일
Sets(집합)Setvar set = {1,2,3};순서가 없고 요소 중복을 허용하지 않는 컬렉션
Maps(키-값 매핑)Mapvar map = {"name":"Tom"};키-값 쌍으로 저장하는 구조, 키는 유일해야 함
Runes(유니코드 코드 포인트)RunesRunes("\u{1f600}")문자열 하위 유니코드 코드 포인트를 읽는 구식 방식, 공식적으로 characters 패키지 사용 권장
Null(널 값)NullNull n = null;유일한 값은 null, 널 안전 체계 최상위 기본 타입

Dart의 모든 변수는 본질적으로 객체(클래스 인스턴스)입니다. 리터럴로 빠르게 생성하거나 해당 생성자를 호출해 초기화할 수 있습니다.

'hello'는 문자열 리터럴, true는 불리언 리터럴이며 Map() 생성자로 Map 인스턴스를 생성합니다.

언어 특수 보조 타입

내장 기본 타입은 아니지만 모두 Dart 예약 키워드입니다.

이 타입들은 타입 시스템, 비동기 처리, 정적 타입 검사 등 특수 역할을 수행합니다:

타입역할 설명
ObjectNull을 제외한 모든 Dart 클래스의 부모 클래스
Enum모든 열거형의 부모 클래스
Future / Stream비동기 프로그래밍 전용
Iterablefor-in 반복문, 동기 제너레이터에 사용
Never표현식이 정상적으로 종료될 수 없음(항상 예외를 던지는 함수 반환 타입에 사용)
dynamic정적 타입 검사 비활성화, 대신 Object / Object? 사용 권장
void반환값 없음, 함수 반환 타입으로 자주 사용

1 Numbers 숫자

부모 클래스:num

숫자는 두 하위 클래스로 나뉨:int 정수, double 부동소수점, 모두 num을 상속

1.1 int 정수

범위 차이 (Dart는 프론트엔드 개발도 지원하므로 웹 버전이 존재):

  • 네이티브 플랫폼:-2^63 ~ 2^63 - 1
  • 웹 (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:런타임 상수 (실행 시 한 번 값을 할당하면 이후 수정 불가). 실행 시 값을 지정할 수 있지만 두 번째 할당은 금지됨.

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.1 선언 방식:작은 따옴표 / 큰 따옴표

var s1 = '작은 따옴표 문자열';
var s2 = "큰 따옴표 문자열";

// 이스케이프 문자
var s3 = 'It\'s ok';
var s4 = "It's ok"; // 따옴표 종류를 교차 사용하면 이스케이프 불필요
Code language: JavaScript (javascript)

문자열 안에는 특수 의미를 가진 문자 (큰 따옴표 ", 개행, 역슬래시 \)가 존재하는데 직접 적으면 문자열 구문이 깨져 컴파일 오류가 발생합니다.

이스케이프 문자 \는 문자의 특수 기능을 취소하거나 보이지 않는 제어 문자를 출력할 때 사용합니다.

키보드의 엔터, 탭 키 등은 화면에 표시되지 않으므로 \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 문자열 연결

  1. 인접한 리터럴은 자동 연결 (개행 포함 가능)
  2. + 연산자로 연결
var s1 = "첫 줄"
    "두 번째 줄";
var s2 = "a" + "b";
assert(s1 == "첫 줄두 번째 줄");
assert(s2 == "ab");Code language: JavaScript (javascript)

2.4 다중 행 문자열:삼중 따옴표 ”’ / “””

void main() {
	var multi1 = '''
	다중 행
	텍스트
	''';

	var multi2 = """
	삼중 큰 따옴표 다중행
	hello foxdevelop.com
	""";
	
	print(multi1);
	print(multi2);

}Code language: PHP (php)
        다중 행
        텍스트

        삼중 큰 따옴표 다중행
        hello foxdevelop.comCode language: CSS (css)

삼중 작은 따옴표 안에 큰 따옴표, 삼중 큰 따옴표 안에 작은 따옴표를 적을 때 이스케이프 불필요:

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 단 두 개이며 모두 컴파일 타임 상수

Dart는 강타입 규칙:숫자나 문자열로 직접 참/거짓 판단 불가, 명시적인 비교 연산 필수

void main() {
	var emptyStr = "";
	print(emptyStr.isEmpty); // 빈 문자열 검사

	var zero = 0;
	print(zero == 0); // 0 검사

	var nil = null;
	print(nil == null); // null 검사

	var nan = 0 / 0;
	print(nan.isNaN); // 숫자가 아닌 값 검사

}Code language: PHP (php)

4. Runes & characters 유니코드 문자 처리

  1. Runes:문자열 내부 유니코드 코드 포인트를 직접 꺼내는 구식 방식
  2. 권장 package:characters:시각적으로 한 글자로 인식하는 그래픽 클러스터 (국기 이모지 등) 정상 처리

유니코드 이스케이프 문법

  • 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은 독립적인 최상위 타입이며 모든 널 허용 타입과 호환됩니다.

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다