본문 바로가기
JAVA

자바 중수로 가는 지름길 ? 무름표연산자, 삼항연산자

by helloissue 2021. 12. 9.

오늘은 무름표 연산자('?')에 대해 작성하고자 합니다. 코드를 리뷰하면서 문화충격급으로 ifelse 코드 단순화로 하는 선배를 보고 당장 흡수해야겠다고 느꼈던 무름표연산자 ('?')[ 삼항 연산자 ]를 어떻게 사용하는지 알아보겠습니다.

 

자바-삼항연산자
자바-삼항연산자

1. 무름표 연산자('?'), 삼항 연산자?

 

프레임워크에서 다양한 것을 지원해주는 것과 달리 예전에는 null도 비교해야 하고, 공백도 비교해야 하고, 정말 if문의 대파티가 있었던 적이 있었습니다. 코드는 단순해야 함에도 불구하고 스파게티 코드처럼 난잡하면 코드 리뷰나 리팩터링 시에도 불리합니다. 그런 단점을 보완하게 해 준 자바 삼항연산자 null을 사용하여  , if문과 함께 복잡한 코드를 단순하게 코드 한 줄로 나오게 해 보겠습니다.

 

if( hash.get( sKey ) == null ) {

    hash.put( sKey, iPoint);
    
}else {	

    hash.put( sKey, hash.get( sKey ) + iPoint );		
    
}

 

하단의 코드와 같이 if문이 들어간 4줄의 코드를 단 한 줄로 요약할 수가 있습니다.

코드가 간결해 보이고 무엇보다도, 가독성이 올라가게 되어 코드 리뷰나 리팩터링 시 시간을 줄여줄 수 있습니다.

 

hash.put( sKey, hash.get( sKey ) == null ? iPoint :  hash.get( sKey ) + iPoint );

 

전체 코드는 다음과 같습니다. 

public static void main(String[] args) {
    System.out.println("** 포인트 관리 프로그램 입니다 **");
    HashMap<String,Integer> hash = null;
    Scanner sc  = null;
    int iPoint  = 0;
    String sKey = null;

    hash 	= new  HashMap<String,Integer>();
    sc 		= new Scanner( System.in );
		
    while(true) {   System.out.print( "이름과 포인트 입력 >>" ); 
		
        sKey = sc.next(); 	iPoint = sc.nextInt();
        if("그만".indexOf( sKey ) > -1) { break; }
        hash.put(sKey, hash.get( sKey ) == null ? iPoint : hash.get( sKey ) + iPoint );
        System.out.println( hash );
        
    }
		
    sc.close();
}

 

2. 사용법 ( 조건문   참 결과   :   거짓 결과 )

자바 삼항연산자 boolean이 되는 부분은 ? 앞의 상단부분입니다.

 

 ?  를 기준으로 앞에는 조건문 을 작성하시고,

뒤에 거짓의 결과를    구분자와 함께 코딩하면 끝이 납니다.

하단의 코드에는 간단하게 내가 새라면의 코드와  자바 삼항연산자 계산비교를 구현해보았습니다.

if( 내가 새라면 ) {

    헐훨 날아갈텐데
    
}else{

    걸어서 가겠지
}

내가 새라면 ? 훨훨날아갈텐데 : 걸어서가겠지


int iPointA = 99;
int iPointB = 90;
		
System.out.println( iPointA>iPointB ? "A가크네요":"A가크진않네요.");
//A가크네요

 

 

 

마치면서. 도움이 되셨다면 좋아요. 부탁드립니다. 당장 내 코드에 적용해보시면 가독성 +1 향상되는 것을 느낄 수 있습니다.

 

 

댓글