JavaRush /Java blogi /Random-UZ /Java tilidagi uchlik operator

Java tilidagi uchlik operator

Guruhda nashr etilgan
Salom! Bugungi ma'ruza juda uzoq bo'lmaydi, lekin albatta foydali bo'ladi :) Biz uchlik operator deb ataladigan narsa haqida gaplashamiz . Uchlik operator - 1"Ternary" "uchlik" degan ma'noni anglatadi. if-elseBu siz allaqachon tanish bo'lgan shartli operatorga muqobildir . Keling, misol keltiraylik. Aytaylik, bir kishi 18+ reytingga ega filmni ko'rish uchun kinoteatrga borishga qaror qildi. Qo'riqchi kiraverishda uning yoshini tekshiradi: agar u yosh chegarasiga to'g'ri kelsa, u zalga kirishga ruxsat beradi, agar bo'lmasa, uni uyiga yuboradi. Keling, sinf yaratamiz Manva uni tekshiramiz 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);

   }
}
Konsol chiqishi:

"Все в порядке, проходите!"
Agar biz chiqishni konsolga olib tashlasak, testimiz quyidagicha ko'rinadi:
if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }
Bu erda, aslida, oddiy mantiq ishlaydi: bitta shart tekshiriladi (yosh >= 18). Bunga qarab, securityAnswerqo'riqchining javobiga ega bo'lgan ikkita satrdan biri o'zgaruvchiga tayinlanadi. Bunday holatlar, ya'ni "bir shart - ikkita mumkin bo'lgan natija" dasturlashda juda tez-tez uchraydi. Shuning uchun ular uchun bir xil uchlik operator yaratilgan. Uning yordamida biz tekshirishimizni bitta kod qatoriga soddalashtirishimiz mumkin:
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);

}
Ushbu operatorning ishi shunday ko'rinadi. U uchlik (uchlik) deb ataladi, chunki uning ishida 3 ta komponent ishtirok etadi:
  • Bitta shart ( man.getAge() >= 18)
  • Ikkita mumkin bo'lgan natija ( "Yaxshi emas, davom et!" va "Bu film sizning yoshingizga mos emas!" )
Birinchidan, kodda shart yoziladi, so'ngra savol belgisi qo'yiladi.
man.getAge() >= 18 ?
"Insonning yoshi 18 dan kattami yoki unga tengmi?" Quyidagi birinchi natija. Agar shart qaytarilsa true, u yonadi, ya'ni to'g'ri bo'lsa:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!"
Odamning yoshi 18 yoshdan kattami yoki unga tengmi? Ha bo'lsa, o'zgaruvchiga "Hammasi yaxshi, kiring!"securityAnswer qiymatini belgilang. . Undan keyin “ ” operatori keladi :, undan keyin ikkinchi natija yoziladi. Agar shart qaytarilsa false, u ishga tushadi, ya'ni noto'g'ri:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";
Odamning yoshi 18 yoshdan kattami yoki unga tengmi? Ha bo'lsa, o'zgaruvchiga "Hammasi yaxshi, kiring!"securityAnswer qiymatini belgilang. . Agar yo'q bo'lsa, o'zgaruvchiga "Bu film sizning yoshingizga mos kelmaydi!securityAnswer " Uchlik operatorning umumiy mantig'i shunday ko'rinadi. holat? 1-natija: 2-natija Uchlik operator - 2Aytgancha, shart atrofida qavs qo'yish shart emas: biz buni ko'proq o'qilishi uchun qildik. Ularsiz ishlaydi:
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);

}
Nimadan foydalanish kerak: if-else, yoki uchlik operatori? Ishlash nuqtai nazaridan unchalik katta farq yo'q. Aniqrog'i, u mavjud bo'lishi mumkin, ammo ahamiyatsiz. Bu erda savol sizning kodingizning o'qilishi mumkinligi bilan bog'liq. Dasturlashda bu juda muhim: siz yozgan kod nafaqat to'g'ri ishlashi, balki o'qish oson bo'lishi kerak. Axir, u boshqa dasturchilarga, sizning hamkasblaringizga "meros" bo'lishi mumkin! Va agar tushunish qiyin bo'lsa, bu ularning ham, sizning ham ishingizni murakkablashtiradi - ular har 5 daqiqada tushuntirish uchun sizga yugurishadi. Umumiy tavsiya shunday bo'lishi mumkin: agar shart oddiy va tekshirish oson bo'lsa, siz uchlik operatoridan zararsiz foydalanishingiz mumkin. Shunday qilib, siz kod miqdori va cheklar sonini kamaytirasiz if-else, ular allaqachon ko'p bo'lishi mumkin. Ammo agar vaziyat murakkab va ko'p bosqichli bo'lsa, undan foydalanish yaxshiroqdir if-else. Masalan, bu holda uchlik operatoridan foydalanish yomon fikr bo'ladi:
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
Shunday qilib, bu erda nima bo'layotganini darhol tushunolmaysiz! Kodni o'qish juda qiyin bo'ldi. Va barchasi qiyin vaziyat tufayli:
  • Agar shaxs 18 yoshdan katta yoki unga teng bo'lsa + chiptasi bo'lsa (yoki bepul kirish uchun kupon bo'lsa) + ular bilan kichik bolalari bo'lmasa - ular o'tishlari mumkin.
  • Agar shartning kamida bitta qismi noto'g'ri bo'lsa, unda bu mumkin emas.
Bu erda foydalanish yaxshiroq bo'lishi aniq if-else. Ha, bizning kodimiz hajmi kattaroq bo'lar edi, lekin u bir necha marta o'qilishi mumkin edi. Va sizning hamkasblaringizdan hech biri, agar ular bunday kodni meros qilib olsalar, boshlarini changallamaydilar :) Nihoyat, men sizga kitobni tavsiya qilaman. Ma'ruzada biz kodni o'qish imkoniyati mavzusiga to'xtaldik. Robert Martinning "Toza kod" klassik kitobi unga bag'ishlangan. Uchlik operator - 3Unda dasturchilar uchun eng yaxshi amaliyotlar va tavsiyalar mavjud bo'lib, ular sizga nafaqat ishlaydigan, balki o'qilishi oson kod yozish imkonini beradi. JavaRush-da ushbu kitobning sharhi mavjud .
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION