반응형

Dart에서는 다양한 연산자를 제공하여 변수와 값에 대해 다양한 작업을 수행할 수 있습니다.

연산자는 크게 다음과 같은 범주로 나눌 수 있습니다

 

1. 산술 연산자

2. 증감 연산자

3. 관계 연산자

4. 논리 연산자

5. 비트 연산자

6. 할당 연산자

7. 조건 연산자

8. 형 변환 연산자

9. 기타 연산자

 

1. 산술 연산자

 

산술 연산자는 기본적인 산술 계산을 수행합니다.

 

+ (덧셈)

- (뺄셈)

* (곱셈)

/ (나눗셈)

~/ (몫 연산)

% (나머지 연산)

 

void main() {
  int a = 10;
  int b = 3;

  print(a + b); // 13
  print(a - b); // 7
  print(a * b); // 30
  print(a / b); // 3.3333333333333335
  print(a ~/ b); // 3
  print(a % b); // 1
}

 

2. 증감 연산자

 

증감 연산자는 변수의 값을 증가시키거나 감소시킵니다.

 

++a (전위 증가)

a++ (후위 증가)

--a (전위 감소)

a-- (후위 감소)

void main() {
  int a = 10;

  print(++a); // 11
  print(a++); // 11
  print(a); // 12
  print(--a); // 11
  print(a--); // 11
  print(a); // 10
}

 

3. 관계 연산자

 

관계 연산자는 두 피연산자 간의 관계를 비교합니다. 결과는 boolean 값입니다.

 

== (같다)

!= (같지 않다)

> (크다)

< (작다)

>= (크거나 같다)

<= (작거나 같다)

void main() {
  int a = 10;
  int b = 3;

  print(a == b); // false
  print(a != b); // true
  print(a > b); // true
  print(a < b); // false
  print(a >= b); // true
  print(a <= b); // false
}

 

4. 논리 연산자

 

논리 연산자는 boolean 값에 대해 논리 연산을 수행합니다.

 

&& (그리고)

|| (또는)

! (부정)

void main() {
  bool a = true;
  bool b = false;

  print(a && b); // false
  print(a || b); // true
  print(!a); // false
  print(!b); // true
}

 

5. 비트 연산자

 

비트 연산자는 비트 수준에서 연산을 수행합니다.

 

& (AND)

| (OR)

^ (XOR)

~ (NOT)

<< (왼쪽 시프트)

>> (오른쪽 시프트)

void main() {
  int a = 10; // 1010
  int b = 3; // 0011

  print(a & b); // 2 (0010)
  print(a | b); // 11 (1011)
  print(a ^ b); // 9 (1001)
  print(~a); // -11 (2의 보수)
  print(a << 1); // 20 (10100)
  print(a >> 1); // 5 (0101)
}

 

6. 할당 연산자

 

할당 연산자는 변수에 값을 할당하거나 특정 연산을 수행한 후 할당합니다.

 

= (할당)

+= (더한 후 할당)

-= (뺀 후 할당)

*= (곱한 후 할당)

/= (나눈 후 할당)

~/= (몫을 구한 후 할당)

%= (나머지를 구한 후 할당)

void main() {
  int a = 10;
  int b = 3;

  a += b; // a = a + b
  print(a); // 13

  a -= b; // a = a - b
  print(a); // 10

  a *= b; // a = a * b
  print(a); // 30

  a /= b; // a = a / b
  print(a); // 10.0

  a ~/= b; // a = a ~/ b
  print(a); // 3

  a %= b; // a = a % b
  print(a); // 0
}

 

7. 조건 연산자

 

조건 연산자는 특정 조건에 따라 값을 선택합니다.

 

condition ? expr1 : expr2 (삼항 연산자)

?? (널 병합 연산자)

void main() {
  int a = 10;
  int b = 3;

  var result = a > b ? 'a가 크다' : 'b가 크다';
  print(result); // a가 크다

  String? name;
  String userName = name ?? 'Guest';
  print(userName); // Guest
}

 

8. 형 변환 연산자

 

형 변환 연산자는 객체의 타입을 변환하거나 확인합니다.

 

as (형 변환)

is (타입 검사)

is! (타입 검사 - 부정)

 

void main() {
  dynamic a = 10;

  // 타입 검사
  if (a is int) {
    print('a는 int 타입입니다.');
  }

  // 타입 검사 - 부정
  if (a is! String) {
    print('a는 String 타입이 아닙니다.');
  }

  // 형 변환
  var b = a as int;
  print(b); // 10
}

 

9. 기타 연산자

 

[] (리스트 및 맵 접근 연산자)

. (멤버 접근 연산자)

?. (널 안전 멤버 접근 연산자)

.. (계단식 표기법)

void main() {
  List<int> numbers = [1, 2, 3];
  Map<String, int> ages = {'John': 25, 'Doe': 30};

  // 리스트 및 맵 접근
  print(numbers[0]); // 1
  print(ages['John']); // 25

  // 멤버 접근
  String text = 'Hello';
  print(text.length); // 5

  // 널 안전 멤버 접근
  String? nullableText;
  print(nullableText?.length); // null

  // 계단식 표기법
  var buffer = StringBuffer()
    ..write('Hello')
    ..write(' ')
    ..write('World');
  print(buffer.toString()); // Hello World
}

 

결론

 

Dart 연산자는 다양한 작업을 수행할 수 있도록 돕는 중요한 도구입니다. 연산자의 올바른 사용법을 익히면 코드의 효율성과 가독성을 높일 수 있습니다. 이 문서에서 설명한 다양한 연산자를 잘 활용하여 더욱 효과적인 Dart 프로그래밍을 수행할 수 있습니다.

 

참고 문서

 

Dart Language Tour - Operators

반응형

+ Recent posts