Dart 관계 연산자

관계 연산자는 각종 크기 비교에 사용하는 연산 기호를 말합니다. 수학에서 자주 사용해 본 적 있을 겁니다.

관계 연산자 표

연산자설명
==동일함 (값 일치 여부 판단)
!=다름
>보다 큼
<보다 작음
>=크거나 같음
<=작거나 같음

== 연산자는 다른 객체에도 사용할 수 있습니다

== 동일 연산자 핵심 규칙

==는 두 변수/객체가 가리키는 값이 같은지 판단할 때 사용합니다; 두 참조가 정확히 동일한 메모리 객체를 가리키는지 엄격하게 확인해야 할 경우 == 대신 전용 함수 identical()을 사용해야 합니다.

널(null) 특수 처리 어느 한쪽이라도 null일 경우:

  • 양쪽 모두 null이면 true 반환
  • 한쪽만 null이면 false 반환

일반 객체 실행 로직 첫 번째 피연산자의 == 메서드를 호출하는 것과 동일합니다: x.==(y), 연산자는 본질적으로 피연산자에 속한 멤버 메서드입니다.

아래 출력 결과는 모두 true입니다. null은 0도 빈 문자열 “”와도 같지 않습니다

void main() {
	// 양쪽 모두 null이므로 == 연산 결과는 true
	print(null == null); //true
	// 한쪽은 null, 다른 한쪽은 값이 있으므로 == 결과는 false
	print(null != 0); //true
	print(null != ""); //true
}
Code language: PHP (php)

전체 예시를 살펴보겠습니다

void main() {
	// == 동일 비교
	print(2 == 2);
	print("dart" == "dart");
	print([1,2] == [1,2]);

	// != 상이 비교
	print(2 != 3);
	print(true != false);

	// > 보다 큼
	print(3 > 2);
	print(10 > -5);

	// < 보다 작음
	print(2 < 3);
	print(-1 < 0);

	// >= 크거나 같음
	print(3 >= 3);
	print(5 >= 2);

	// <= 작거나 같음
	print(2 <= 3);
	print(4 <= 4);
}
Code language: Dart (dart)

실행 결과

true
true
false
true
true
true
true
true
true
true
true
true
trueCode language: JavaScript (javascript)

==identical()의 차이점

void main() {
	var a = [1, 2];
	var b = [1, 2];
	
	// List의 ==는 객체 참조를 비교하며 a, b는 서로 다른 배열이므로 결과는 false
	print(a == b);
	
	// identical은 동일한 메모리 객체인지 확인하며 a, b는 다른 배열이므로 false 반환
	print(identical(a, b));
	
	// c는 a를 직접 참조해 동일 객체를 가리키므로 identical은 true 반환
	var c = a;
	print(identical(a, c));
}
Code language: PHP (php)

참고: 두 리스트의 내용을 비교하려면 listEquals를 사용해야 합니다

import 'package:flutter/foundation.dart';
listEquals(a, b); // true, 배열의 모든 요소를 비교Code language: JavaScript (javascript)

문자열 비교

문자열 비교에는 ==!=만 사용할 수 있습니다

void main() {
	// 문자열 관계/동일 연산
	print("apple" != "banana"); //true
	print("apple" == "apple"); //true
	//print("zoo" > "apple"); // 오류 발생, 문자열에는 > < >= <=를 사용할 수 없으며 == !=로만 동일 여부 판단 가능

	// 불리언 값 동일 비교
	print(true == true);  //true
	print(true != false);  //true
}
Code language: PHP (php)

산술 연산자와 결합한 관계 연산자

앞선 강의 내용에 따르면 산술 연산 > 관계 연산 우선순위가 적용되므로 덧셈, 뺄셈, 곱셈, 나눗셈을 먼저 계산한 뒤 크기 및 동일 여부 비교를 진행합니다;

void main() {
  // 좌우 산술식을 먼저 계산 후 비교 수행
  print(10 + 5 == 3 * 5); // 15 == 15 → true
  print(20 - 3 != 8 + 9); // 17 != 17 → false
  print(12 + 4 > 5 + 6);  // 16 > 11 → true
  print(9 - 7 < 10 - 1);  // 2 < 9 → true
  print(6 + 2 >= 4 * 2);  // 8 >= 8 → true
  print(15 - 8 <= 3 + 5); // 7 <= 8 → true
}Code language: PHP (php)

위 예시는 관계 연산자 양쪽의 수식을 먼저 연산한 뒤 그 결과값으로 비교를 진행합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다