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';
}
'Flutter > Dart' 카테고리의 다른 글
Dart class 캡슐화 (Getter, Setter, 접근제한자) (0) | 2023.04.19 |
---|---|
Dart 클래스(class) (0) | 2023.04.19 |
Dart 함수(function, main function) (2) | 2023.04.19 |
Dart 반복문 ( for, while, do while, continue, break ) (0) | 2023.04.19 |
Dart 조건문 ( if, if - else, if - else if - else, switch ) (0) | 2023.04.19 |