CodeGym /Java Blog /무작위의 /삼항 연산자
John Squirrels
레벨 41
San Francisco

삼항 연산자

무작위의 그룹에 게시되었습니다
안녕! 오늘 강의는 그리 길지 않지만 확실히 유용할 것입니다 :) 우리는 이른바 삼항 연산자 에 대해 이야기할 것입니다 . 삼항 연산자 - 1Ternary는 " 세 부분으로 구성된 "을 의미합니다. if-else이미 만난 제어 흐름 문 에 대한 대안입니다 . 예를 들어 보겠습니다. 누군가가 R등급 영화(17세 미만은 부모 또는 성인 보호자 동반 필요)를 보기로 결정했다고 가정해 보겠습니다. 안내인은 문 앞에서 나이를 확인합니다. 나이 확인에 합격하면 입장이 허용됩니다. 그렇지 않으면 집으로 보내집니다. 클래스를 선언 Person하고 다음 명령문을 사용하여 이를 확인합니다 if-else.

public class Person {

   private int age;

   public Person(int age) {
       this.age = age;
   }

   public int getAge() {
       return age;
   }

   public void setAge(int age) {
       this.age = age;
   }

   public static void main(String[] args) {

       Person person = new Person(22);

       String usherResponse;

       if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }

       System.out.println(usherResponse);

   }
}
콘솔 출력:

"Everything is in order. Come in!"
콘솔 출력을 제거하면 다음과 같이 확인됩니다.

if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }
여기서 논리는 매우 간단합니다. 하나의 조건이 확인됩니다(나이 >= 18). 결과에 따라 usherResponse안내인의 응답과 함께 변수에 두 문자열 중 하나가 할당됩니다. 이러한 상황("하나의 조건 - 두 가지 가능한 결과")은 프로그래밍에서 매우 일반적입니다. 그래서 삼항 연산자가 만들어졌습니다. 이를 사용하여 확인을 한 줄의 코드로 단순화할 수 있습니다.

public static void main(String[] args) {

   Person person = new Person(22);

   String usherResponse = (person.getAge() > 18) ? "Everything is in order. Come in!" : "This film is not suitable for your age!";

   System.out.println(usherResponse);

}
이 연산자의 작동 방식은 다음과 같습니다. 3개의 구성 요소가 포함되어 있기 때문에 삼항 연산자라고 합니다.
  • 하나의 조건( person.getAge() > 18)
  • 두 가지 가능한 결과( "모든 것이 정상입니다. 들어와!""이 영화는 귀하의 연령에 적합하지 않습니다!" )
먼저 조건을 쓰고 물음표를 씁니다.

person.getAge() > 18 ?
"이 사람의 나이가 18세 이상입니까?" 그런 다음 첫 번째 값을 씁니다 . 이 값은 조건이 다음으로 평가되는 경우에true 사용됩니다 .

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!"
이 사람의 나이가 18세 이상입니까? 그렇다면 변수를 "모든 것이 정상입니다. 들어오세요!"usherResponse 로 설정합니다. 다음은 " :" 기호와 두 번째 값 입니다 . 이 값은 조건이 다음으로 평가되는 경우에false 사용됩니다 .

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
이 사람의 나이가 18세 이상입니까? 그렇다면 변수를 "모든 것이 정상입니다. 들어오세요!"usherResponse 로 설정합니다. . 그렇지 않은 경우 변수를 "이 영화는 나이에 적합하지 않습니다!"usherResponse 로 설정합니다. 일반적으로 삼항 연산자의 논리는 다음과 같습니다. 상태 ? 결과 1 : 결과 2 삼항 연산자 - 2 그런데 조건을 둘러싼 괄호는 필요하지 않습니다. 가독성을 높이기 위해 추가했습니다. 그것들 없이도 작동합니다.

public static void main(String[] args) {

   Person person = new Person(22);

   String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";

   System.out.println(usherResponse);

}
그래서 무엇을 사용해야합니까? 문 if-else또는 삼항 연산자? 성능면에서는 차이가 없습니다. 더 정확하게는 있을 수 있지만 중요하지 않습니다. 여기서 가장 큰 고려 사항은 코드의 가독성입니다. 작성하는 코드는 올바르게 작동할 뿐만 아니라 읽기 쉬워야 합니다 . 결국 다른 프로그래머, 동료에 의해 "상속"될 수 있습니다! 이해하기 어렵다면 그들의 작업과 귀하의 작업이 복잡해질 것입니다(그들은 설명을 위해 5분마다 달려올 것입니다). 일반적인 권장 사항은 다음과 같습니다. 조건이 간단하고 쉽게 확인할 수 있는 경우 해를 끼치지 않고 삼항 연산자를 사용할 수 있습니다. 이렇게 하면 코드의 양과if-else진술(이미 많은 진술이 있을 수 있음). 그러나 조건이 복잡하고 여러 단계가 포함된 경우 문을 사용하는 것이 좋습니다 if-else. 예를 들어 다음과 같은 경우 삼항 연산자를 사용하는 것은 좋지 않습니다.

String usherResponse = (person.getAge() > 18 && (person.hasTicket() || person.hasCoupon()) && !person.hasChild()) ? "Come in!" : "You can't come in!";
여기서 무슨 일이 일어나고 있는지 즉시 알 수 없습니다! 코드를 읽기가 매우 어려워 졌습니다 . 그리고 복잡한 조건 때문입니다.
  • 18세 이상이고 티켓(또는 자유이용권)이 있고 어린 자녀가 없으면 들어올 수 있습니다.
  • 조건의 일부라도 거짓이면 그는 할 수 없습니다.
여기서 if-else. 예, 우리 코드는 더 커질 것이지만 훨씬 더 읽기 쉽습니다. 그리고 당신의 동료들은 이 코드를 상속받는다면 손바닥을 마주하지 않을 것입니다 :) 마지막으로 당신에게 좋은 것을 추천할 수 있습니다. 수업 중에 코드 가독성에 대해 다루었습니다. 고전이 된 Robert Martin의 저서 "Clean Code"는이 주제에 전념합니다. 삼항 연산자 - 4기능적일 뿐만 아니라 쉽게 읽을 수 있는 코드를 작성하는 데 도움이 되는 프로그래머를 위한 모범 사례와 권장 사항을 함께 제공합니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION