자바의 삼항 연산자

1. 개요

삼항 조건 연산자 ? :를 사용하면 Java에서 표현식을 정의 할 수 있습니다. 값을 반환하는 if-else 문의 축약 된 형식입니다 .

이 튜토리얼에서는 삼항 구조를 사용하는시기와 방법을 배웁니다. 구문을 살펴보고 사용법을 살펴 보겠습니다.

2. 구문

삼항 연산자 ? : Java에서 세 개의 피연산자를 허용하는 유일한 연산자입니다 .

booleanExpression ? expression1 : expression2

첫 번째 피연산자는 부울 식 이어야하며 두 번째 및 세 번째 피연산자는 값을 반환하는 모든식이 될 수 있습니다. 삼항 구문은 첫 번째 피연산자가 true로 평가되면 expression1 을 출력으로 , 그렇지 않으면 expression2를 반환합니다.

3. 삼항 연산자 예

아래 if-else 구조를 고려해 봅시다 .

int num = 8; String msg = ""; if(num > 10) { msg = "Number is greater than 10"; } else { msg = "Number is less than or equal to 10"; }

위의 코드에서 num 의 조건부 평가를 기반으로 msg에 값을 할당했습니다 . if-else 문을 삼항 구조 로 쉽게 대체하여이 코드를 더 읽기 쉽고 안전하게 만들 수 있습니다 .

final String msg = num > 10 ? "Number is greater than 10" : "Number is less than or equal to 10";

4. 표현 평가

Java 삼항 구조를 사용하는 경우 오른쪽 표현식 중 하나 (예 : expression1 또는 expression2 ) 만 런타임에 평가됩니다 .

간단한 JUnit 테스트 케이스를 작성하여 테스트 할 수 있습니다 .

@Test public void whenConditionIsTrue_thenOnlyFirstExpressionIsEvaluated() { int exp1 = 0, exp2 = 0; int result = 12 > 10 ? ++exp1 : ++exp2; assertThat(exp1).isEqualTo(1); assertThat(exp2).isEqualTo(0); assertThat(result).isEqualTo(1); }

우리 부울12> (10)는 항상 평가 , 진실 의 가치, 그래서 EXP2이 그대로 남아 있었다. 마찬가지로, 거짓 조건에 대해 어떤 일이 발생하는지 생각해 봅시다 .

@Test public void whenConditionIsFalse_thenOnlySecondExpressionIsEvaluated() { int exp1 = 0, exp2 = 0; int result = 8 > 10 ? ++exp1 : ++exp2; assertThat(exp1).isEqualTo(0); assertThat(exp2).isEqualTo(1); assertThat(result).isEqualTo(1); }

exp1 의 값 은 그대로 유지되고 exp2 의 값은 1 씩 증가합니다.

5. 중첩 삼항 연산자

삼항 연산자를 원하는 수의 수준에 중첩 할 수 있습니다. 그래서 구조 :

String msg = num > 10 ? "Number is greater than 10" : num > 5 ? "Number is greater than 5" : "Number is less than equal to 5";

Java에서 유효합니다. 위 코드의 가독성을 높이기 위해 필요할 때마다 중괄호 ()를 사용할 수 있습니다 .

String msg = num > 10 ? "Number is greater than 10" : (num > 5 ? "Number is greater than 5" : "Number is less than equal to 5");

그러나 , 현실 세계에서와 같은 중첩 삼원 구조를 사용하지 않는 것이 좋습니다 있습니다. 이는 코드의 가독성이 떨어지고 유지 관리가 어렵 기 때문입니다.

6. 결론

이 빠른 자습서에서는 Java의 삼항 연산자에 대해 배웠습니다. 모든 if-else 구문을 삼항 연산자 로 바꿀 수는 없습니다 . 그러나 어떤 경우에는 훌륭한 도구이며 코드를 훨씬 짧고 읽기 쉽게 만듭니다.

평소처럼 전체 소스 코드는 Github에서 사용할 수 있습니다.