본문 바로가기
개발/Dart

2. Dart 기본 문법 - 2.1 변수와 자료형

by 파란검정 2024. 8. 6.
반응형

2. 기본 문법

 

2.1 변수와 자료형

 

2.1.1 변수 선언

Dart에서 변수 선언은 매우 직관적입니다. 아래의 방법들을 통해 Dart에서 변수를 선언할 수 있습니다.

  • var 사용: 타입을 명시하지 않고 변수를 선언할 때 사용합니다. Dart는 할당된 값을 기반으로 타입을 추론합니다. 단, 한 번 타입이 결정되면 이후 값 변경 시 타입은 변경되지 않습니다.
  • 명시적 타입 사용: 타입을 명시하여 변수를 선언합니다. 예를 들어 int, double, String, bool 등입니다.
void main() {
  var name = 'Alice'; // Dart가 타입을 추론하여 String으로 설정
  int age = 30;       // 명시적으로 int 타입으로 선언
  double height = 1.75; // 명시적으로 double 타입으로 선언
  bool isStudent = false; // 명시적으로 bool 타입으로 선언

  print('Name: $name');
  print('Age: $age');
  print('Height: $height');
  print('Is Student: $isStudent');
}

위 코드를 실행하면 각 변수의 값이 올바르게 출력되는 것을 확인할 수 있습니다.

 

 

2.1.2 기본 자료형

Dart는 다양한 기본 자료형을 제공합니다. 여기에는 int, double, String, bool 등이 포함됩니다.

void main() {
  int a = 10; // 정수형 변수
  double b = 5.5; // 부동 소수점 변수
  String c = 'Hello, Dart!'; // 문자열 변수
  bool d = true; // 불리언 변수

  print('int: $a');
  print('double: $b');
  print('String: $c');
  print('bool: $d');
}

이 코드를 실행하면 각 자료형의 값이 올바르게 출력됩니다.

 

 

2.1.3 상수

Dart에서는 상수를 선언할 때 finalconst를 사용할 수 있습니다. 이 둘은 모두 변하지 않는 값을 나타내지만, 약간의 차이가 있습니다.

  • final: 런타임에 단 한 번만 값을 할당할 수 있습니다. 할당된 후에는 변경할 수 없습니다.
  • const: 컴파일타임 상수를 선언할 때 사용합니다. 상수 값이 컴파일 시 결정되며, 불변입니다.
void main() {
  final name = 'Bob'; // 런타임 상수
  const pi = 3.14; // 컴파일타임 상수

  print('Name: $name');
  print('Pi: $pi');
}

상수 값이 올바르게 출력되는 것을 확인할 수 있습니다.

 

 

2.1.4 자료형 변환

Dart에서 자료형 변환은 매우 간단합니다. 다음과 같은 방법들을 사용하여 자료형을 변환할 수 있습니다.

  • toString(): 숫자 등을 문자열로 변환합니다.
  • int.parse(), double.parse(): 문자열을 정수 또는 부동 소수점으로 변환합니다.
  • toInt(), toDouble(): 숫자 간의 변환을 수행합니다.
void main() {
  int one = int.parse('1'); // 문자열을 정수로 변환
  double onePointOne = double.parse('1.1'); // 문자열을 부동 소수점으로 변환
  String oneAsString = 1.toString(); // 정수를 문자열로 변환
  double a = 10.5;
  int b = a.toInt(); // 부동 소수점을 정수로 변환

  print('int: $one');
  print('double: $onePointOne');
  print('String: $oneAsString');
  print('double to int: $b');
}

이 예제 코드를 실행하면 자료형 변환이 올바르게 이루어지는 것을 확인할 수 있습니다.

 

 

2.2 프로그램에서 자료형이 필요한 이유

자료형은 프로그램의 여러 측면에서 중요한 역할을 합니다. 다음은 그 이유입니다.

  • 정확한 데이터 표현: 자료형은 데이터가 어떤 종류인지 정의합니다. 예를 들어, int는 정수를 나타내고, String은 문자열을 나타냅니다. 이를 통해 데이터가 어떻게 처리되고 저장될지를 명확히 알 수 있습니다.

 

  • 메모리 관리: 각 자료형은 메모리를 다르게 사용합니다. intdouble은 메모리 사용량이 다르고, 이는 프로그램의 성능에 영향을 미칩니다. 올바른 자료형을 사용하면 메모리 사용을 효율적으로 관리할 수 있습니다.

 

  • 오류 방지: 자료형을 명시적으로 정의함으로써, 코드에서 발생할 수 있는 오류를 방지할 수 있습니다. 예를 들어, 문자열과 숫자를 혼합하여 사용하는 경우, 타입 불일치로 인한 오류를 예방할 수 있습니다.

 

  • 코드 가독성: 코드에서 자료형을 명시하면 코드의 의도가 명확해지고, 다른 개발자들이 코드를 이해하기 쉬워집니다. 이는 유지보수와 협업에 도움이 됩니다.

 

  • 컴파일 타임 오류 감지: 많은 프로그래밍 언어는 컴파일 시점에서 자료형 오류를 감지하여 코드의 신뢰성을 높입니다. 예를 들어, 변수에 잘못된 타입의 값을 할당하려고 하면 컴파일 타임 오류가 발생합니다.

이와 같은 이유로 자료형은 프로그램의 안정성과 효율성을 높이는 데 중요한 역할을 합니다.

 

 

2.3 컴파일과 런타임

2.3.1 컴파일(Compile)

컴파일은 소스 코드를 기계어 또는 중간 코드로 변환하는 과정입니다. 이 과정은 프로그램이 실행되기 전에 이루어집니다. 컴파일러(Compiler)는 소스 코드를 읽고, 구문 분석을 통해 코드를 최적화하며, 실행 가능한 파일로 변환합니다.

  • 컴파일 타임(Compile Time): 프로그램이 컴파일되는 시점을 의미합니다. 이 시점에서 발생하는 오류를 컴파일 타임 오류라고 합니다. 이러한 오류는 주로 문법 오류, 타입 오류, 참조 오류 등을 포함합니다. 예를 들어, 변수 타입이 일치하지 않거나 잘못된 문법을 사용했을 때 발생합니다.
 
장점
  • 성능 최적화: 컴파일 과정에서 코드가 최적화되어 실행 속도가 빨라집니다.
  • 오류 검출: 컴파일 시점에 많은 오류를 발견할 수 있어 안정성이 높습니다.
단점
  • 긴 개발 주기: 소스 코드가 변경될 때마다 다시 컴파일해야 하므로 시간이 걸릴 수 있습니다.

 

2.3.2 런타임(Runtime)

런타임은 프로그램이 실행되는 시점을 의미합니다. 이 시점에서 프로그램은 사용자가 입력한 데이터를 처리하고, 로직을 수행하며, 결과를 출력합니다.

  • 런타임 오류(Runtime Error): 프로그램이 실행되는 동안 발생하는 오류를 의미합니다. 이러한 오류는 주로 논리적 오류, 예외 상황, 메모리 부족 등에서 발생합니다. 예를 들어, 배열의 범위를 벗어난 접근, null 참조, 파일 입출력 오류 등이 있습니다.
 
장점
  • 유연성: 코드 변경 후 즉시 테스트할 수 있어 개발 속도가 빠릅니다.
  • 디버깅 용이: 실행 중에 발생하는 문제를 바로 확인하고 수정할 수 있습니다.
단점
  • 오류 발생 가능성: 실행 중에 예상치 못한 오류가 발생할 수 있습니다.

 

 

예제 코드 설명

아래 예제 코드는 컴파일 타임 상수와 런타임 상수의 차이를 보여줍니다.

void main() {
  final currentTime = DateTime.now(); // 런타임 상수
  const pi = 3.14; // 컴파일타임 상수

  print('Current Time: $currentTime');
  print('Pi: $pi');
}

 

 

  • 컴파일 타임 상수(const): pi와 같은 상수는 컴파일 시점에 값이 결정되며, 이후 변경할 수 없습니다. 이는 프로그램이 실행되기 전에 이미 값이 할당되어 있어, 메모리와 성능 최적화에 유리합니다.

 

  • 런타임 상수(final): currentTime과 같은 상수는 프로그램이 실행되는 동안에 값이 할당됩니다. final 키워드는 런타임에 단 한 번만 값을 할당할 수 있으며, 이후 변경할 수 없습니다. 이는 주로 실행 시점에 값을 받아와야 하는 경우에 사용됩니다.

 

 

요약

  • 컴파일 타임(Compile Time): 프로그램이 실행되기 전에 코드를 변환하고 최적화하는 단계입니다. 이 시점에 발생하는 오류는 컴파일 타임 오류입니다.
  • 런타임(Runtime): 프로그램이 실행되는 시점입니다. 이 시점에 발생하는 오류는 런타임 오류입니다.
  • 컴파일 타임 상수(const): 컴파일 시점에 값이 결정되고 변경할 수 없는 상수입니다.
  • 런타임 상수(final): 실행 시점에 값이 할당되며 이후 변경할 수 없는 상수입니다.
  • 자료형의 중요성: 자료형은 데이터의 정확한 표현, 메모리 관리, 오류 방지, 코드 가독성 향상, 컴파일 타임 오류 감지 등 여러 측면에서 중요한 역할을 합니다.

 

 

반응형