Dart - 연산자

목진성·2024년 11월 18일

Dart Language

목록 보기
12/12

1. 산술 연산자

  • 기본적인 + , - , * , / 를 지원한다.
  • 수 앞에 - 기호를 달아서 음수 표현도 가능하다 Ex> -name
  • ~/ 로 나머지 값을 정수 표현으로 결과를 나타 낼 수 있고(몫), %로 소수 값을 나타낼 수 있다 (나머지)
void main(List<String> arguments) {

  int add = 1 + 2;

  int sub = 1 - 2;

  int multi = 1 * 2;

  double div = 1 / 2;

  int minus = -1;

  // 나눗셈의 결과값 중 몫 
  int div_int = 11 ~/ 5;
 
  // 나눗셈의 결과값 중 나머지
  double div_remainder = 11 % 2;
}

2. 증감 연산자

  • 기본적인 --, ++ 연산자를 지원한다.
  • 수 앞에 달면 해당 코드를 실행전 계산을 수행하고 코드 뒤에 달면 해당 코드를 실행 후 값을 증가한다.
  • Cpu 에서 증감 연산자는 메모리 공간 2개를 확보하여 이전 값에 1을 더하는 것이 아니고, 값을 가지고 있는 메모리에 1을 을 바로 연산하여 증가시킨다. ( 메모리 효율, 성능 측면 )
void main(List<String> arguments) {
  
  int num1 = 3;

  int num2 = --num1;

  int num3 = num1--;

  int num4 = ++num1;

  int num5 = num1++;

}

3. 비교 연산자

  • 기본적인 ==, !=, >, <, >= ,<= 연산자를 모두 지원한다.

  • 주의! =>, =< 처럼 반대로 입력하면 컴파일 에러가 뜬다.

    void main(List<String> arguments) {
    
     bool is_ok = 1 == 2;
    
     bool is_ok2 = 1 != 2;
    
     bool is_ok3 = 1 > 2;
    
     bool is_ok4 = 1 < 2;
    
     bool is_ok5 = 1 >= 2;
    
     bool is_ok6 = 1 <= 2;
     

}

4. Type test 연산자

 - 타입 캐스팅을 하는 as, 해당 타입을 확인하는 is, is! 연산자가 있다.
void main(List<String> arguments) {

  Person pr = Person();

  // Person객체를 Student로 타입캐스팅
  Student stu = pr as Student;

 // 변수 stu가 Student 클래스(타입) 인지 확인 
  bool is_Studnet = stu is Student;
  
 // 변수 stu가 Student 클래스(타입) 가 아닌지 확인
  bool is_not_Student = stu is! Student;
  
}

class Person {
  Person();
}

class Student extends Person {
  Student();
} 

5. 대입 연산자

  • 기본적인 =, *=, %=, >>>=, ^=, +=, /=, <<=, &=, |=, -=, ~/=, >>= 연산자가 있다.

  • num (operator)= 1 은 num = num + 1 처럼 표현할 수 있다. 가독성 및 유지보수 효율성을 위해 기본적으로 쓰인다.

  • 특정 컴파일러(파이썬)에서는 대입연산자가 증감연산자처럼 계산됨으로 메모리 절약 및 성능의 향상 효과를 보일 수 있다.

    void main(List<String> arguments) {
    
     int num1 = 3;
    
     // num1 = num1 + 1; 과 같은 결과
     num1 += 1;
    
     // num1 = num1 - 2; 과 같은 결과
     num1 -= 2;
    
     // num1 = num1 * 3; 과 같은 결과
     num1 *= 3;
     

}

6. 논리 연산자

  • 기본적인 ! (not), || ( or ), && ( and) 연산자를 지원한다.

    | 는 한국 키보드 원화 표시 또는 역슬러시 ( \ ) 버튼을 shift와 함께 누르면 된다.

void main(List<String> arguments) {

  // not
  bool is_ok = !(1 == 2);

  // or
  bool is_ok2 = (1 == 2) || (2 == 2);

  // and
  bool is_ok3 = (1 == 2) && (2 == 2);

}

7. 비트 연산자

  • 기본적인 & ( And), | ( or ), ^ ( Xor ), ~ ( not, 반전 ), << ( 왼쪽 시프트), >> ( 오른쪽 시프트), >>> (Unsigned 오른쪽 시프트)
void main(List<String> arguments) {
 
  // 이진수 0010
  int binary_num = 0x02;

  // 이진수 0000
  int binary_num2 = 0x00;

  int binary_num3 = binary_num & binary_num2;

  int binary_num4 = binary_num | binary_num2;

  int binary_num5 = binary_num ^ binary_num2;

  int binary_num6 = ~binary_num2;

  int binary_num7 = binary_num << 2;

  int binary_num8 = binary_num >> 2;

  int binary_num9 = binary_num >>> 2;

}

8. 삼항 연산자

  • 기본적인 조건 ? 참일 경우 값: 거짓일 경우 값 으로 사용할 수있다.
  • if-else 문과 같지만 분기가 일어나지 않아 삼항연산자의 성능이 더욱 좋다. 하지만 무분별한 사용은 가독성 및 유지보수 효율성을 떨어뜨릴 수 있으므로 주의해서 사용한다.
  • Dart 에서는 ?? 연산자도 제공하는데 아래와 같이 사용할 수 있다.

    삼항 연산자는 처음 접하면 어려울 수도 있으므로 예시 확인 및 다양한 연습을 통해서 익혀본다.

void main(List<String> arguments) {

  // 1==2 이면 4, 아니면 5 그러므로 1과 2는 다른 값이므로 num = 5 가된다.

  int num = (1 == 2) ? 4 : 5;

  String? name2;

  // name2가 null 이 아니면 name2 , null 이면 jack 을 name 에 입력
  String name = name2 ?? 'jack';
	
  // 위와 동일한 결과 
  String name3 ??= 'jack';

}
profile
우주를 항해하는 여행자

0개의 댓글