Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) 삼항 연산자 완벽 가이드: 기본 문법부터 실전 예제까지

자바의 삼항 연산자(ternary operator)를 사용하면 if 문을 한 줄의 코드로 작성할 수 있습니다. 삼항 연산자는 주어진 조건식이 참(true)인지 거짓(false)인지 평가하고, 그 평가 결과에 따라 서로 다른 값을 반환합니다.


자바에서는 프로그램의 실행 흐름을 제어하기 위해 if...else 문을 사용합니다. if 문은 표현식이 참인지 거짓인지 판단하며, 조건이 true일 때 특정 코드 블록을 실행합니다.

그러나 if...else 문은 여러 줄에 걸쳐 작성됩니다. 단순한 조건 하나를 평가하는 데도 코드가 불필요하게 길어질 수 있죠. 바로 이런 경우 삼항 연산자가 빛을 발합니다. 자바 삼항 연산자는 간단한 if...else 문을 대체하여 코드를 더 읽기 쉽게 만들어 줍니다.

이 글에서는 자바 삼항 연산자의 사용 방법을 살펴보고, 실제 예제를 통해 어떻게 활용하는지 단계별로 알아보겠습니다.

자바 삼항 연산자란?

자바 삼항 연산자를 사용하면 if...else 문을 아주 간결하게 표현할 수 있습니다. 삼항 연산자는 세 개의 피연산자(operand)를 받기 때문에 '삼항(ternary)'이라는 이름이 붙었습니다. 삼항 연산자는 조건식이 참인지 거짓인지 평가한 뒤, 그 결과에 따라 지정된 값을 반환합니다.

자바에서 삼항 연산자의 기본 문법은 다음과 같습니다.

variable = (condition) ? valueIfTrue : valueIfFalse;

'삼항'이라는 이름의 유래처럼, 하나의 삼항 연산자는 정확히 세 개의 피연산자로 구성됩니다.

  • 조건식(condition): 연산자가 참/거짓을 판단할 표현식
  • valueIfTrue: 조건식이 true일 때 변수에 할당되는 값
  • valueIfFalse: 조건식이 false일 때 변수에 할당되는 값

삼항 연산자의 결과를 반드시 변수에 저장할 필요는 없습니다. 예를 들어 System.out.println() 문 안에 삼항 연산자를 직접 작성하면, 그 결과를 자바 콘솔에서 바로 확인할 수도 있습니다.

또한 if 문과 달리 삼항 연산자에는 'else' 키워드가 없습니다. 대신 콜론(:) 뒤의 값이 else 조건 역할을 담당합니다.

그럼 실제 예제를 통해 삼항 연산자가 어떻게 동작하는지 살펴보겠습니다.

자바 삼항 연산자 예제

쇼핑 웹사이트를 개발한다고 가정해 보겠습니다. 이 사이트에서는 16세 이상인 사용자만 상품을 구매할 수 있어야 합니다.

고객의 나이를 검증할 때 삼항 연산자를 활용할 수 있습니다. 사용자의 나이는 '16세 미만' 아니면 '16세 이상', 두 경우 중 하나이기 때문에 if 문보다 삼항 연산자가 더 효율적입니다. 다음은 사용자의 나이를 확인하는 예제 프로그램입니다.

public class EvaluateAge {
    public static void main(String[] args) {
        int age = 22;

        String result = (age >= 16) ? "이 사용자는 16세 이상입니다." : "이 사용자는 16세 미만입니다.";
        System.out.println(result);
    }
}

위 코드에서 삼항 연산자를 평가한 결과, 조건이 참이므로 다음과 같이 출력됩니다.

이 사용자는 16세 이상입니다.

코드의 실행 과정을 하나씩 살펴보겠습니다. 먼저 EvaluateAge라는 클래스를 정의하고, 고객의 나이를 저장할 자바 변수 age를 선언한 뒤 22라는 값을 할당했습니다.

다음으로 result라는 변수를 선언하고, 그 값에 삼항 연산자의 결과를 담았습니다. 삼항 연산자는 사용자의 나이(age)가 16보다 크거나 같은지(age >= 16)를 평가합니다.

표현식이 true로 평가되면 연산자는 "이 사용자는 16세 이상입니다."를 반환하고, 그렇지 않으면 "이 사용자는 16세 미만입니다."를 반환합니다. 마지막 줄에서는 result 변수에 담긴 메시지를 콘솔에 출력합니다.

만약 사용자의 나이가 15세였다면 코드는 다음과 같은 문자열을 반환했을 것입니다.

이 사용자는 16세 미만입니다.

사용자의 나이가 16보다 크거나 같지 않으면 삼항 연산자가 false로 평가되기 때문입니다. 이렇게 우리는 사용자가 서비스를 이용할 만큼 나이가 충분한지 확인하는 시스템을 성공적으로 만들었습니다.

삼항 연산자를 사용해야 하는 경우

삼항 연산자는 간단한 if 문을 더 간결하게 표현하고 싶을 때 사용하는 것이 좋습니다. 적절히 활용하면 코드의 가독성이 크게 향상됩니다.

앞선 예제에서는 조건 하나만 평가했습니다. 만약 이 로직을 일반적인 if 문으로 작성했다면 다음과 같았을 것입니다.

if (age >= 16) {
    String result = "이 사용자는 16세 이상입니다.";
} else {
    String result = "이 사용자는 16세 미만입니다.";
}

코드 자체는 단순하지만 무려 다섯 줄에 걸쳐 작성됩니다. 반면 삼항 연산자를 사용하면 이 if 문을 단 한 줄로 줄일 수 있습니다.

정리하면, 삼항 연산자는 결과적으로 짧고 단순한 문장일 때만 사용해야 합니다. 그 외의 경우에는 일반적인 if 문을 작성하는 것이 좋습니다. 삼항 연산자의 목적은 코드를 더 간결하고 읽기 쉽게 만드는 것이므로, 복잡한 if 문을 억지로 삼항 연산자로 바꾸면 오히려 이 목표에 어긋나게 됩니다.

참고로 삼항 연산자와 if 문은 모두 불리언(Boolean) 표현식을 평가합니다. 불리언 표현식이란 true 또는 false 두 가지 값만 가질 수 있는 식을 말합니다.

중첩 삼항 연산자는 피하세요

삼항 연산자 안에 또 다른 삼항 연산자를 넣는 '중첩(nested)' 형태도 기술적으로는 가능합니다. 하지만 중첩된 삼항 연산자는 코드를 한눈에 파악하기 어렵게 만들므로, 조건이 둘 이상이라면 if...else if 문이나 switch 문을 사용하는 편이 좋습니다.

마무리

삼항 연산자는 자바에서 if 문을 더 간결하게 작성해 코드의 흐름을 제어할 수 있게 해주는 기능입니다. 세 개의 피연산자를 받는다고 해서 '삼항(ternary)' 연산자라고 부릅니다.

이번 글에서는 자바 삼항 연산자의 기본 개념과 문법을 살펴보고, if 문과의 비교를 통해 각각의 실제 활용 예제도 확인했습니다. 삼항 연산자를 적재적소에 활용하면 코드가 훨씬 깔끔해지니, 오늘 배운 내용을 직접 실습해 보시기 바랍니다.