JavaRush /Java Blog /Random-TL /Operator ng Ternary sa Java

Operator ng Ternary sa Java

Nai-publish sa grupo
Kamusta! Ang lecture ngayon ay hindi masyadong mahaba, ngunit tiyak na kapaki-pakinabang :) Pag-uusapan natin ang tinatawag na ternary operator . Operator ng Ternary - 1Ang ibig sabihin ng "Ternary" ay "triple". Isa itong alternatibo sa conditional operator if-else, na pamilyar ka na. Magbigay tayo ng halimbawa. Sabihin nating nagpasya ang isang tao na pumunta sa sinehan para manood ng pelikulang may 18+ na rating. Sinusuri ng guwardiya ang kanyang edad sa pasukan: kung maabot niya ang limitasyon ng edad, pinapayagan niya siyang pumasok sa bulwagan; kung hindi, pinauuwi niya siya. Gumawa tayo ng klase Manat suriin ito gamit ang 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);

   }
}
Output ng console:

"Все в порядке, проходите!"
Kung aalisin namin ang output sa console, ganito ang hitsura ng aming pagsubok:
if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }
Dito, sa katunayan, gumagana ang simpleng lohika: isang kundisyon ang sinusuri (edad >= 18). Depende dito, securityAnswerang isa sa dalawang linya na may tugon ng bantay ay itinalaga sa variable. Ang ganitong mga sitwasyon, "isang kondisyon - dalawang posibleng resulta," ay madalas na nangyayari sa programming. Samakatuwid, ang parehong operator ng ternary ay nilikha para sa kanila. Gamit ito, maaari naming gawing simple ang aming pag-verify sa isang linya ng 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);

}
Ito ang hitsura ng trabaho ng operator na ito. Tinatawag itong ternary (triple) dahil 3 bahagi ang nakikibahagi sa gawain nito:
  • Isang kondisyon ( man.getAge() >= 18)
  • Dalawang posibleng resulta ( "Okay lang, magpatuloy ka!" at "Ang pelikulang ito ay hindi angkop sa iyong edad!" )
Una, ang isang kundisyon ay nakasulat sa code, na sinusundan ng isang tandang pananong.
man.getAge() >= 18 ?
"Ang edad ba ng tao ay higit sa o katumbas ng 18?" Ang sumusunod ay ang unang resulta. Ito ay gumagana kung ang kundisyon ay bumalik true, ibig sabihin, ay totoo:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!"
Ang edad ba ng tao ay higit sa o katumbas ng 18? Kung oo, italaga sa variable securityAnswer ang value na "Magaling ang lahat, pumasok ka!" . Sinusundan ito ng :operator na “ ”, pagkatapos ay isinulat ang pangalawang resulta. Ito ay gumagana kung ang kundisyon ay bumalik false, iyon ay, ito ay hindi totoo:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";
Ang edad ba ng tao ay higit sa o katumbas ng 18? Kung oo, italaga sa variable securityAnswer ang value na "Magaling ang lahat, pumasok ka!" . Kung hindi, italaga sa variable securityAnswer ang value na "Ang pelikulang ito ay hindi angkop para sa iyong edad!" Ito ang hitsura ng pangkalahatang lohika ng ternary operator. kundisyon ? resulta 1: resulta 2 Operator ng Ternary - 2Sa pamamagitan ng paraan, hindi kinakailangang maglagay ng mga panaklong sa paligid ng kundisyon: ginawa namin ito para sa mas madaling mabasa. Ito ay gagana nang wala sila:
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);

}
Ano ang dapat mong gamitin: if-else, o ang ternary operator? Sa mga tuntunin ng pagganap ay walang gaanong pagkakaiba. Mas tiyak, ito ay maaaring umiiral, ngunit ito ay hindi gaanong mahalaga. Narito ang tanong ay nauugnay sa pagiging madaling mabasa ng iyong code. Napakahalaga nito sa programming: ang code na iyong isusulat ay hindi lamang dapat gumana nang tama, ngunit madaling basahin. Pagkatapos ng lahat, maaari itong "manahin" sa ibang mga programmer, ang iyong mga kasamahan! At kung ito ay mahirap unawain, ito ay magpapalubha sa kanilang trabaho at sa iyo - tatakbo sila sa iyo para sa mga paliwanag tuwing 5 minuto. Ang isang pangkalahatang rekomendasyon ay maaaring ganito ang tunog: kung ang kundisyon ay simple at madaling suriin, maaari mong gamitin ang ternary operator nang walang pinsala. Sa ganitong paraan mababawasan mo ang dami ng code at ang bilang ng mga tseke if-else, na maaaring marami na. Ngunit kung ang kondisyon ay kumplikado at multi-stage, mas mainam na gamitin ang if-else. Halimbawa, sa kasong ito, isang masamang ideya na gamitin ang ternary operator:
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
Kaya hindi mo agad maiintindihan kung ano ang nangyayari dito! Ang code ay naging napakahirap basahin. At lahat dahil sa isang mahirap na kondisyon:
  • Kung ang isang tao ay higit pa o katumbas ng 18 taong gulang + ay may tiket (o may kupon para sa libreng pagpasok) + walang kasamang maliliit na bata - kung gayon maaari silang makapasa.
  • Kung hindi bababa sa isang bahagi ng kundisyon ang nagbabalik ng mali, hindi ito magagawa.
Ito ay kung saan ito ay malinaw na mas mahusay na gamitin if-else. Oo, ang aming code ay magiging mas malaki sa laki, ngunit ito ay maraming beses na mas nababasa. At walang sinuman sa iyong mga kasamahan ang makikinig sa kanilang mga ulo kung magmana sila ng ganoong code :) Sa wakas, maaari kong irekomenda sa iyo ang aklat. Sa panayam ay hinawakan namin ang paksa ng pagiging madaling mabasa ng code. Ang klasikong aklat na "Clean Code" ni Robert Martin ay nakatuon sa kanya. Operator ng Ternary - 3Naglalaman ito ng mga pinakamahusay na kasanayan at rekomendasyon para sa mga programmer na magbibigay-daan sa iyo na magsulat hindi lamang gumagana, ngunit madaling basahin ang code. Mayroong pagsusuri sa aklat na ito sa JavaRush.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION