Dart 문법

Dart 문법 (1)

hamiric 2024. 10. 25. 19:10

## 해당 글은 강의를 들으면서 알고있던것을 적는게 아닌, 모르고 있던것을 알았을때 적어 놓은것임

 

< 변수(타입) >

Const vs Final

공통점

  • 해당 키워드로 변수를 선언할 경우, 컴파일러가 해당 코드를 읽어들이는 시점이 아닌 앞선 시점에서 초기화가 이루어지게 된다.
  • 초기화 시점이 기존보다 앞당겨졌기 때문에, 초기화 이후에 해당 변수는 프로그램 실행중 값을 변경할 수 없게 된다.

차이점

  • Final의 초기화 시점은 프로그램이 실행할 때(*런타임) 초기화가 이루어진다.
  • Const의 초기화 시점은 *컴파일 시점에 초기화가 이루어진다.

(추가)

컴파일 시점이란?

컴파일 시점은 코드를 작성하고 컴파일러가 이를 기계어로 변환하는 단계다. 컴파일 시점에는 프로그램이 실행되지 않으며, 코드의 구문과 타입 검사 등이 이루지게 된다.

 

런타임 시점이란?

런타임 시점은 프로그램이 실제로 실행될 때의 단계다. 컴파일이 완료된 후, 프로그램이 메모리에 로드되어 실행되며, 사용자가 상호작용할 수 있는 시점이다.

 

< Nullable >

? 와 ?. 의 차이점

  • [타입]? [변수명]으로 사용하며, 의미는 해당 변수명에 null 값이 들어갈 수 있다고 명시 하는 것이라고 할 수 있다.
// [타입]? [변수명]
String? age;  // age는 null 값이 들어갈 수도 있음.
  • [객체명]?.[함수명]으로 사용하며, 의미는 해당 표현식이 null값을 가질 수 있다고 명시 하는 것이라고 할 수 있다.
// [객체]?.[함수명]
print(people?.length);  // people.length는 null 값이 들어갈 수도 있음

 

< 연산자 >

산술 연산자 비고 주의점
+ 더하기 연산자 ( A + B )  
- 빼기 연산자 ( A - B )  
* 곱하기 연산자 ( A * B )  
/ 나누기 연산자 ( A / B ) B 는 0 이 아니어야 한다.
~/ 나누기 연산자 ( A ~/ B ) 단, 리턴값은 정수값  
% 나머지 연산자 ( A % B )  
비교 연산자 -  
== A와 B가 같은값이면 true, 다른값이면 false ( A == B )  
!= A와 B가 다른값이면 true, 같은값이면 false ( A != B )  
> A가 B보다 클경우 true ( A > B )  
< A가 B 보다 작을 경우 true ( A < B )  
>= A가 B보다 크거나 같을 경우 true ( A >= B )  
<= A가 B보다 작거나 같을 경우 true ( A <= B )  
타입 체크 연산자 -  
as 타입 변환이 필요할시 사용하는 연산자 ( A as double ) 확실하게 형 변환이 가능할 경우에만 사용
is 특정 타입을 가지고 있는지 판별할때 사용하는 연산자 ( A is int )  
is! 특정 타입을 가지고 있지 않는걸 판별할때 사용하는 연산자 ( A is! double )  
대입 연산자 -  
= B의 값을 A에 대입할때 사용하는 연산자 ( A = B )  
??= A 가 null 일경우 B의 값을 A에 대입 하는 연산자 ( A ??= B )  
+= A 의 값에 B의 값을 더한 후 A에 대입하는 연산자 ( A += B )  
-= A의 값에 B의 값을 뺀 후 A에 대입하는 연산자 ( A -= B )  
*= A의 값에 B의 값을 곱한 후 A 에 대입하는 연산자 ( A *= B )  
/= A의 값에 B의 값을 나눈 후 A 에 대입하는 연산자 ( A /= B ) B 는 0 이 아니어야 한다.
~/= A의 값에 B의 값을 나눈 후 나온 정수값을 A 에 대입하는 연산자 ( A ~/= B )  
%= A의 값에 B의 값을 나눈 후 나온 나머지를 A에 대입하는 연산자 ( A %= B )  
논리 연산자 -  
! A라는 판별식을 반전 시켜 주는 연산자 ( !A )  
|| A라는 판별식과 B라는 판별식중 하나라도 참이면 참 - or ( A || B )  
&& A라는 판별식과 B라는 판별식 중 하나라도 거짓이면 거짓 - and ( A && B )  

 

< 조건문 >

  • Switch 문의 응용법 ( break 가 없는 경우? )
int dayOfWeek = 2;

switch (dayOfWeek) {
  case 1:
    print('월');
    // break;
  case 2:
    print('화');
    // break;
  case 3:
    print('수');
    // break;
  default:
    print('X');
}

// 결과값 : 화수X

 

break가 없는 경우 case 에 들어간 후 그냥 그대로 쭉 읽어 내려가 switch문을 끝까지 읽게 된다는 점!!

 

  • 조건 표현식
// 조건문 ? 표현식1 : 표현식2 ( 조건문이 참일경우 표현식1, 거짓일 경우 표현식2)
bool flag = true;

int num = flag ? 1 : 2


// 표현식1 ?? 표현식2 ( 표현식1이 null 일경우 표현식2, 표현식1이 Nonnull 일 경우 표현식1 )
int? a = null;
int b = 3;

print( a ?? b );

 

< 반복문 >

  • do - while
// do { ... } while 조건문
int num = 0;

do {
  num ++;
} while (num < 5);

 

  • for - in
// for ( in 이 들어간 순회식 ) {...}
// List, Set, Map 같은 요소를 순회할 경우에 사용되는 반복문

List<String> fruits = ['사과', '바나나', '귤'];

for (var fruit in fruits) {
  print(fruit);
}

'Dart 문법' 카테고리의 다른 글

Dart 문법(6)  (0) 2024.11.04
Dart 문법(5)  (0) 2024.11.01
Dart 문법(4)  (0) 2024.10.28
Dart 문법(3)  (0) 2024.10.28
Dart 문법(2)  (0) 2024.10.28