JavaRush /Java блогу /Random-KY /Java тилиндеги үчтүк оператор

Java тилиндеги үчтүк оператор

Группада жарыяланган
Салам! Бүгүнкү лекция абдан узак болбойт, бирок, албетте, пайдалуу :) Биз үчтүк оператор деп аталган жөнүндө сүйлөшөбүз . Үчтүк оператор – 1"Үчтүк" "үчтүк" дегенди билдирет. Бул шарттуу операторго альтернатива болуп саналат 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күзөтчүнүн жообу бар эки саптын бири өзгөрмөгө дайындалат. Мындай жагдайлар, “бир шарт – эки мүмкүн натыйжа” программалоодо көп кездешет. Ошондуктан, алар үчүн бир эле үчтүк оператор түзүлгөн. Аны менен биз текшерүүнү codeдун бир сабына жөнөкөйлөтө алабыз:
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 компонент катышат:
  • Бир шарт ( man.getAge() >= 18)
  • Мүмкүн болгон эки натыйжа ( "Эч нерсе эмес, улантыңыз!" жана "Бул тасма сиздин жашыңызга туура келбейт!" )
Биринчиден, codeго шарт жазылат, андан кийин суроо белгиси коюлат.
man.getAge() >= 18 ?
"Адамдын жашы 18ден чоңбу же барабарбы?" Төмөндө биринчи натыйжа болуп саналат. Шарт кайтып келсе true, ал күйөт, башкача айтканда, чын:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!"
Адамдын жашы 18ден чоңбу же ага барабарбы? Эгер ооба болсо, өзгөрмөгө “Баары жакшы, кириңиз!”securityAnswer маанисин бериңиз. . Андан кийин “ ” оператору келет :, андан кийин экинчи жыйынтык жазылат. Шарт кайтып келсе, күйөт 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, же үчтүк оператор? аткаруу жагынан көп деле айырма жок. Тагыраак айтканда, бар болушу мүмкүн, бирок анча деле мааниге ээ эмес. Бул жерде суроо сиздин codeуңуздун окулушуна байланыштуу. Бул программалоодо абдан маанилүү: сиз жазган code туура иштебестен, окууга оңой болушу керек. Анткени, ал башка программисттерге, сиздин кесиптештериңизге “мурас” болуп калышы мүмкүн! Ал эми түшүнүү кыйын болсо, бул алардын да, сенин да ишин татаалдатат – алар ар бир 5 мүнөт сайын сизге чуркап түшүндүрмө беришет. Жалпы сунуш төмөнкүдөй угулушу мүмкүн: эгерде шарт жөнөкөй жана текшерүү оңой болсо, сиз үчтүк операторду зыянсыз колдоно аласыз. Ушундай жол менен сиз codeдун көлөмүн жана чектердин санын азайтасыз if-else, алардын саны көп болушу мүмкүн. Бирок шарт татаал жана көп баскычтуу болсо, анда аны колдонуу жакшы if-else. Мисалы, бул учурда үчтүк операторду колдонуу жаман идея болот:
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
Демек, бул жерде эмне болуп жатканын дароо түшүнбөй каласыз! Кодду окуу абдан кыйын болуп калды. Жана баары оор абалдан улам:
  • Эгерде адамдын жашы 18ден ашса же ага тете болсо + билети (же бекер кирүү купону бар) + жанында кичинекей балдары жок болсо - анда алар өтө алышат.
  • Эгерде шарттын жок дегенде бир бөлүгү жалган болсо, анда ал мүмкүн эмес.
Бул жерде аны колдонуу жакшы болмок if-else. Ооба, биздин codeдун көлөмү чоңураак болмок, бирок ал бир нече эсе көбүрөөк окулмак. Жана сиздин кесиптештериңиздин эч кимиси мындай codeду мурастап алышса, баштарын кысып калbyte :) Акырында, мен сизге китепти сунуш кыла алам. Лекцияда биз codeдун окулушу темасына токтолдук. Роберт Мартиндин классикалык китеби "Таза codeекс" ага арналган. Үчтүк оператор – 3Анда программисттер үчүн эң мыкты тажрыйбалар жана сунуштар камтылган, алар сизге иштеген гана эмес, окууга оңой codeду жазууга мүмкүндүк берет. JavaRush боюнча бул китептин кароосу бар .
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION