JavaRush /Java Blog /Random-KO /Java의 삼항 연산자

Java의 삼항 연산자

Random-KO 그룹에 게시되었습니다
안녕하세요! 오늘 강의는 그리 길지는 않지만 확실히 유익할 것 같습니다 :) 소위 삼항연산자 에 대해 이야기해보겠습니다 . 삼항 연산자 - 1"Ternary"는 "삼중"을 의미합니다. if-else이는 이미 익숙한 조건 연산자의 대안입니다 . 예를 들어 보겠습니다. 어떤 사람이 18세 이상 등급의 영화를 보기 위해 영화관에 가기로 결정했다고 가정해 보겠습니다. 경비원은 입구에서 나이를 확인합니다. 연령 제한을 충족하면 홀에 들어갈 수 있도록 허용하고, 그렇지 않으면 집으로 보냅니다. 클래스를 생성 Man하고 다음과 같이 확인해 봅시다 if-else:
public class Man {

   private int age;

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

   public int getAge() {
       return age;
   }

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

   public static void main(String[] args) {

       Man man = new Man(22);

       String securityAnswer;

       if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }

       System.out.println(securityAnswer);

   }
}
콘솔 출력:

"Все в порядке, проходите!"
콘솔에 대한 출력을 제거하면 테스트는 다음과 같습니다.
if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }
실제로 여기서는 간단한 논리가 작동합니다. 하나의 조건이 확인됩니다(연령 >= 18). 이에 따라 securityAnswer경비원의 응답이 포함된 두 줄 중 하나가 변수에 할당됩니다. "하나의 조건 - 두 개의 가능한 결과"라는 상황은 프로그래밍에서 매우 자주 발생합니다. 따라서 동일한 삼항 연산자가 생성되었습니다. 이를 통해 검증을 한 줄의 코드로 단순화할 수 있습니다.
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = (man.getAge() >= 18) ? "It's all right, come in!" : "This movie is not suitable for your age!";

   System.out.println(securityAnswer);

}
이것이 이 운영자의 작업 모습입니다. 3가지 구성 요소가 작업에 참여하기 때문에 삼항(삼중)이라고 합니다.
  • 조건 1개( man.getAge() >= 18)
  • 두 가지 가능한 결과( "괜찮아, 계속해!" , "이 영화는 네 나이에 적합하지 않아!" )
먼저 코드에 조건을 쓴 다음 물음표를 붙입니다.
man.getAge() >= 18 ?
“그 사람의 나이가 18세 이상입니까?” 다음은 첫 번째 결과입니다. 조건이 반환되면 true, 즉 true인 경우에 실행됩니다.
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!"
해당 사람의 나이가 18세 이상입니까? 그렇다면 변수에 "모든 것이 괜찮습니다. 들어오세요!"라는securityAnswer 값을 할당합니다. . 그 뒤에는 " :" 연산자가 오고 그 뒤에 두 번째 결과가 기록됩니다. 조건이 반환되면 실행됩니다 false. 즉, false입니다.
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";
해당 사람의 나이가 18세 이상입니까? 그렇다면 변수에 "모든 것이 괜찮습니다. 들어오세요!"라는securityAnswer 값을 할당합니다. . 그렇지 않다면 변수에 "이 영화는 당신의 나이에 적합하지 않습니다!"라는securityAnswer 값을 할당하십시오. 이것이 삼항 연산자의 일반적인 논리의 모습입니다. 상태 ? 결과 1 : 결과 2 삼항 연산자 - 2그런데 조건 주위에 괄호를 넣을 필요는 없습니다. 가독성을 높이기 위해 이렇게 했습니다. 그것들 없이도 작동합니다:
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";

   System.out.println(securityAnswer);

}
if-else, 또는 삼항 연산자 중 무엇을 사용해야 합니까 ? 성능면에서는 큰 차이가 없습니다. 더 정확하게는 존재할 수도 있지만 중요하지 않습니다. 여기서 질문은 코드의 가독성과 관련이 있습니다. 이는 프로그래밍에서 매우 중요합니다. 작성하는 코드는 올바르게 작동할 뿐만 아니라 읽기 쉬워야 합니다. 결국, 다른 프로그래머, 동료에게 "상속"될 수 있습니다! 그리고 이해하기 어렵다면 그들의 작업과 귀하의 작업이 모두 복잡해질 것입니다. 그들은 5분마다 설명을 위해 귀하에게 달려갈 것입니다. 일반적인 권장 사항은 다음과 같습니다. 조건이 간단하고 확인하기 쉬운 경우 삼항 연산자를 사용해도 문제가 없습니다. if-else이렇게 하면 이미 많이 있을 수 있는 코드의 양과 검사 횟수를 줄일 수 있습니다 . 하지만 조건이 복잡하고 다단계인 경우에는 를 사용하는 것이 좋습니다 if-else. 예를 들어, 이 경우 삼항 연산자를 사용하는 것은 좋지 않습니다.
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
그래서 여기서 무슨 일이 일어나고 있는지 즉시 이해하지 못할 것입니다! 코드를 읽기가 매우 어려워졌습니다. 그리고 모두 어려운 상황 때문입니다.
  • 18세 이상 + 티켓 소지(또는 무료 입장 쿠폰 소지) + 어린 자녀를 동반하지 않은 경우, 통과할 수 있습니다.
  • 조건 중 적어도 한 부분이 false를 반환하면 그럴 수 없습니다.
여기서는 분명히 를 사용하는 것이 더 나을 것입니다 if-else. 예, 우리 코드는 크기가 더 커지지만 몇 배는 더 읽기 쉬워질 것입니다. 그리고 여러분의 동료 중 누구도 그러한 코드를 물려받았다면 고개를 움츠리지 않을 것입니다. :) 마지막으로, 이 책을 추천할 수 있습니다. 강의에서 우리는 코드 가독성에 관한 주제를 다루었습니다. 로버트 마틴(Robert Martin)의 고전 책 “클린 코드(Clean Code)”를 그녀에게 헌정했습니다. 삼항 연산자 - 3여기에는 작동할 뿐만 아니라 읽기 쉬운 코드를 작성할 수 있는 프로그래머를 위한 모범 사례와 권장 사항이 포함되어 있습니다. JavaRush에 이 책에 대한 리뷰가 있습니다 .
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION