Ternäärioperaattori vai if/else
Milloin kumpaakin kannattaa käyttää.
Ternäärioperaattori vai if/else on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.
Kaksi työkalua, yksi tehtävä
Sekä ternäärioperaattorilla että if/else-rakenteella voidaan haarautua ehdon perusteella.
Keskeinen ero on tämä: ternäärioperaattori on arvon tuottava lauseke, kun taas if/else on toimintoja suorittava lause.
Oikean rakenteen valitseminen pitää koodin selkeänä.
Sama logiikka kahdella tavalla
Tämä if/else-rakenne määrittää tunnisteen iän perusteella.
Se toimii, mutta yksinkertainen valinta vie viisi riviä.
int age = 16;
String status;
if (age >= 18) {
status = "adult";
} else {
status = "minor";
}Ternäärioperaattoriversio
Sama sijoitus ternäärioperaattorilla mahtuu yhdelle riville.
Muuttuja määritellään ja alustetaan yhdellä kertaa ilman toistoa.
int age = 16;
String status = age >= 18 ? "adult" : "minor";Ternäärioperaattori palauttaa arvon
Koska ternäärioperaattori on lauseke, voitte sijoittaa sen kaikkialle, missä odotetaan arvoa: sijoituksiin, palautuksiin ja argumentteihin.
if-lausetta ei voi käyttää arvona, vaan se ohjaa ainoastaan suorituksen kulkua.
public class Main {
public static void main(String[] args) {
int n = 5;
System.out.println(n > 0 ? "positive" : "non-positive");
}
}if/else pystyy muuhunkin
if/else-rakenteella voidaan suorittaa kummassakin haarassa useita lauseita: kirjata tietoja, päivittää useita muuttujia ja kutsua metodeja.
Ternäärioperaattori rajoittuu yhden arvon tuottamiseen, joten se ei voi sisältää toimintojen lohkoa.
int balance = -10;
if (balance < 0) {
System.out.println("Overdrawn!");
balance = 0;
} else {
System.out.println("OK");
}Sivuvaikutukset kuuluvat if/else-rakenteeseen
Jos kummankin haaran on tehtävä jotakin, kuten tulostettava, tallennettava tai heitettävä poikkeus, käyttäkää if/else-rakennetta.
Ternäärioperaattorit on tarkoitettu arvon valitsemiseen, eivät toimintojen suorittamiseen. Sivuvaikutusten pakottaminen ternäärioperaattoriin heikentää luettavuutta.
// Prefer if/else when branches act
boolean error = true;
if (error) {
System.out.println("Logging error");
}Käyttäkää ternäärioperaattoria sijoitukseen
Kun molemmat haarat vain sijoittavat arvon samaan muuttujaan, ternäärioperaattori poistaa toistoa.
if/else-rakenteessa muuttujan nimi toistetaan kahdesti, kun taas ternäärioperaattorissa se kirjoitetaan vain kerran.
public class Main {
public static void main(String[] args) {
int hour = 14;
String shift = hour < 12 ? "morning" : "afternoon";
System.out.println(shift);
}
}Tyyppisäännöt eroavat
Ternäärioperaattori edellyttää, että haaroilla on yhteensopiva tyyppi, jotta lausekkeella on yksi tyyppi.
if/else-rakenteella ei ole tällaista sääntöä, koska haarat ovat toisistaan riippumattomia eivätkä tuota yhteistä arvoa.
// ternary: branches must be compatible types
boolean ok = true;
String msg = ok ? "yes" : "no";Luettavuuden kompromissi
Lyhyessä, yksinkertaisessa valinnassa ternäärioperaattori on selkeämpi.
Monimutkaisissa ehdoissa tai useiden haarojen tapauksessa if/else if on helpompi lukea kuin pitkä sisäkkäinen ternäärioperaattori.
Valitkaa muoto, jonka tuleva lukija ymmärtää nopeimmin.
Molempien yhdistäminen
Voitte yhdistää ne: käyttäkää if/else-rakennetta suorituksen ohjaamiseen ja ternäärioperaattoria haaran sisällä pieneen arvon valintaan.
Näin toiminnot ja arvojen valinta pysyvät niille luontevissa paikoissa.
public class Main {
public static void main(String[] args) {
int qty = 3;
if (qty > 0) {
String word = qty == 1 ? "item" : "items";
System.out.println(qty + " " + word);
}
}
}Nopea ohje
Valitkaa ternäärioperaattori, kun sijoitatte muuttujaan tai palautatte yhden kahdesta yksinkertaisesta arvosta.
Valitkaa if/else, kun haarat suorittavat lauseita, sisältävät sivuvaikutuksia tai logiikka käsittää useita ehtoja.
Pikatarkistus
Milloin if/else-rakennetta pitäisi suosia ternäärioperaattorin sijaan?
Kertaus
Ternäärioperaattorit ovat lausekkeita, jotka valitsevat arvon, kun taas if/else-rakenteet ovat toimintoja suorittavia lauseita.
Käyttäkää ternäärioperaattoria tiiviisiin yhden arvon sijoituksiin ja palautuksiin. Käyttäkää if/else-rakennetta sivuvaikutuksiin, useisiin lauseisiin tai monimutkaiseen haarautumiseen.
Voitte yhdistää molemmat, jotta lopputulos olisi mahdollisimman selkeä.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Ternäärioperaattori vai if/else” ilmainen?
Kyllä – oppitunnin ”Ternäärioperaattori vai if/else” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Ternäärioperaattori vai if/else”?
Milloin kumpaakin kannattaa käyttää. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Ternäärioperaattori vai if/else”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Ternäärioperaattori
- Ternäärioperaattorien ketjuttaminen
- Ternäärioperaattori vai if/else
- Luettavuuden sudenkuopat