Flutter

[Flutter] Dart 기본 문법 익히기(1)

junhyeokkk 2025. 1. 3. 13:45
728x90
반응형
SMALL

기본 개념 

// 코드의 시작점
void main() {

  int n1 = 10;
  double d1 = 10.0;
  bool b1 = true;
  String s1 = '홍길동'; // 홑따옴표 권장 사항
 
}

 

데이터란?
 - 사물이나 현상에서 얻어진 사실 또는 값을 의미한다.

변수란 뭘까?
- 값을 저장할 수 있는 메모리 공간, 즉 값을 저장해 놓고 이후에 재사용 하거나 변경할 수 있도록 메모리 공간을 이름으로 할당한 개념을 말한다.

 

데이터 타입이란?
- 메모리 공간에 들어간 값의 형태이다.

 

dart 기본 메모리 공간 3가지

1. 스택(stack) - 지역 변수, 매개 변수
2. 힙 영역 (heap) - new / 리터럴로 선언된 값들
3. 정적 영역(static) - 전역변수, 클래스의 static 변수, 컴파일 시점 상수 등

 

타입 확인 함수

// 코드의 시작점
void main() {

  int n1 = 10;
  double d1 = 10.0;
  bool b1 = true;
  String s1 = '홍길동'; // 홑따옴표 권장 사항

  print('정수 : ${n1.runtimeType}');
  print('실수 : ${d1.runtimeType}');
  print('정수 : ${b1.runtimeType}');
  print('정수 : ${s1.runtimeType}');
  
}

- 타입 확인 - runtimeType 의 활용
- 디버깅 및 오류 방지

- 예상치 못한 타입의 값이 들어올 경우, 프로그램이 제대로 동작하지 않을 수 있다.
- runtimeType 녀석을 활용해서 타입 체크를 할 수 있다.

 

타입 추론

// 코드의 시작점
void main() {

  var n1 = 1;
  var d1 = 10.1;
  var b1 = true;
  var s1 = '홍길동';

  print(n1.runtimeType);
  print('실수 : ${d1.runtimeType}');
  print('부울 : ${b1.runtimeType}');
  print('문자열 : ${s1.runtimeType}');

  print('------------------------------------');
  // var 키워드로 한 번 초기화된 데이터 타입은 다른 데이터 타입으로 변경이 불가능 하다.
  // n1 = 20.1; 오류 발생

  dynamic dyN1 = 100;
  dyN1 = 20.5;
  print('dyN1 ${dyN1.runtimeType}');
  // dynamic 타입은 모든 타입을 받을 수 있고 다른 타입으로 변경도 가능하다.
} // end of main

- 타입 추론이란?
- 개발자가 변수의 타입을 명시하지 않아도 자동으로 적절한 타입을 결정해주는 기능을 말한다.
Dart 언어에서는 두가지 키워드를 제공.
- var(타입 변경 가능), dynamic(타입 변경 불가능)

 

상수

// 코드의 시작점
void main() {
  // final - 런타임 상수(Run-time Constant)
  // 프로그램이 실행되는 도중에 값이 결정되며, 이후에는 변경 불가능
  final int n1 = 10;
  // n1 = 100; 컴파일 시점에 오류 발생

  // const - 컴파일 타임 상수 (Compile-time Constant)
  // 코드가 컴파일 될 때 값이 확정되어 진다.

  const double d1 = 101.0;
  // d1 = 20.1; 변경 불가능

  // 상수 사용시 데이터 타입도 역시 생략 가능 하다.
  final a1 = 100;
  const b1 = true;
} // end of main

상수란?

- 한번 할당된 값이 변경되지 않는 변수이다.
- dart 에서는 final 키워드와 const 키워드를 제공한다.
-> 둘 공통점은 "값을 변경할 수 없다"에 있지만 둘에 차이점은 컴파일 시점인지(const), 런타임 시점인지(final)

 

연산자

// 연산자
// 산술 연산자
void main() {
  // 더하기
  print('3 + 2 = ${3 + 2}');
  print('3 - 2 = ${3 - 2}');
  print('3 * 2 = ${3 * 2}');
  print('3 / 2 = ${3 / 2}');

  // 나머지 연산자
  print('3 % 2 = ${3 / 2}');
  print('5 ~/ 2 = ${5 ~/ 2}');
}

 

// 비교 연산자
// 두 개의 값을 비교하여 결과를 참/거짓을 판별할 때 사용한다.
void main() {
  // 같다
  print(' 2 == 3 -> ${2 == 3}'); // false
  // 다르다
  print(' 2 != 3 -> ${2 != 3}'); // true

  // 왼쪽 값이 오른쪽 값보다 작다
  print(' 2 < 3 -> ${2 < 3}'); // true
  // 왼쪽에 있는 값이 오른쪽에 있는 값보다 크다
  print(' 2 > 3 -> ${2 > 3}'); // false

  // 왼쪽에 있는 값이 오른쪽에 있는 값보다 작거나 같다
  print(' 2 <= 3 -> ${2 <= 3}'); // true

  // 왼쪽에 있는 값이 오른쪽에 있는 값보다 크거나 같다 -- false
  print(' 2 >= 3 -> ${2 >= 3}'); // false
}
// 논리 연산자
void main() {
  bool isRainy = true;
  bool hasUmbrella = false;

  // and
  //       T    &&      T   ---> True
  print(isRainy && hasUmbrella);
  print(hasUmbrella && isRainy);

  // OR
  print(isRainy || hasUmbrella);
  print(hasUmbrella || isRainy);

  // NOT
  print(!isRainy);
}
728x90
반응형
LIST