[Java] 자바, 삼항연산자(ternary operator) 사용방법

    보편적인 if~else 문

    public static void test1 () {
    	String grade = "";
    	int math = 70;
    	
    	if(math >= 90) grade = "pass";
    	else grade = "fail";
    	System.out.println(math + " is " + grade);
    }
    
    // 70 is fail

    일반적으로 if ~ else 구문을 사용할 때에는 이와같이 변수들을 세팅하여 각 조건마다 값을 세팅한다. 위 예제는 math값이 90이 넘을 경우 pass이고 그렇지 못할 경우, fail인데 math값이 70이기 때문에 "70 is fail"이라는 결과를 화면에 뿌려준다.

     

    default를 세팅하여 라인을 줄인 else 문

    public static void test2 () {
    	String grade = "fail";	// default 값을 세팅하여 else 경우의 수를 줄인다
    	int math = 70;
    		
    	if(math >= 90) grade = "pass";
    	System.out.println(math + " is " + grade);
    }
    
    // 70 is fail

    그러나 개발의 리팩토링을 중요시 여기고 라인수를 줄이길 원한다면, 이렇게 default값을 세팅하여 else를 빼는 방식을 사용할 수 있다. 위 방식은 오히려 컴퓨터 입장에서도 명령어가 줄어들기 때문에 티끌만큼이겠지만 속도도 더 빠르다.

     

    삼항연산자

    변수 = (조건) ? 참 : 거짓;

    라인을 더 줄이고 싶을 경우, 삼항 연산자를 활용할 수 있다. 

     

    public static void test3 () {
    	int math = 70;
    		
    	String grade = (math >= 90) ? "pass" : "fail";
    	System.out.println(math + " is " + grade);
    }
    
    // 70 is fail

    조건 이후, 참일 경우 물음표(?) 다음의 값을 세팅하고, 실패할 경우 다음의 값을 세팅한다. 그러나 여기서 한가지 알아둬야 할 것은 아래와 같은 문법도 가능하다는 것이다.

     

    int math = 90;
    		
    String test = "";
    String grade = (math >= 90) ? test = "뜬금포..." : "fail";
    System.out.println(math + " is " + grade + " " + test);
    
    // 90 is 뜬금포... 뜬금포...

    참 구문안에 다른 변수(test) 에 값을 세팅하고, 이를 호출해보면 test에도 값이 세팅되고 grade에도 세팅이 된 것을 확인할 수 있는데 이게 가능한 이유는 아래와 같은 구문이 가능하기 때문이다.

     

    String grade2 = test3 = "뜬금포...!!";
    System.out.println(grade2 + " is " + test3);
    
    // 뜬금포...!! is 뜬금포...!!

    값을 세팅할 때 참 부분만 가능하고, 거짓 부분에는 값이 세팅이 되지 않으니 이 부분에 대한 참고가 필요하다. 위와 같이 다른 변수를 세팅하는 것은 삼항연산자를 혼란스럽게 하기 때문에 이런 세팅이 필요할 경우 if ~ else를 쓰는 것이 나아 보인다.

     

    삼항연산자는 어디까지나 가독성을 위해서 사용되는 것이 중요하며, 오히려 안쓰다가 삼항연산자를 갑자기 쓰게 되는 경우 오히려 가독성이 떨어질 수 있다는 점도 중요시 여겨야 할 것이다. 

     

    반응형

    댓글

    Designed by JB FACTORY