Gyakorlati alapok
Döntsünk még rövidebb idő alatt! (rövid if)
A Javán és persze számos magas szintű programozási nyelven belül van egy további érdekes lehetőségünk, amellyel kissé felgyorsíthatjuk a döntések futását és lerövidíthetjük a kódot. A kifejezés alapértelmezésben 2 irányú választási lehetőséget biztosít...
...váza a következőképpen néz ki:
a ? b : c
A hivatalos Java-dokumentáció ternary operator kifejezéssel illeti, amit 3 operandusú operátornak fordíthatunk. A váz önmagában nem működőképes, ezért gyorsan ugorjunk is bele egy futtatható Java-kódba:
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = a < b ? a : b;
System.out.println(c);
}
}
Végeredmény:
1
A kód kulcssora nyilvánvalóan az int c = a < b ? a : b; kifejezés. Fordítsuk ezt le emberi nyelvre:
int c = a < b ? a : b;
Ha a kisebb b-nél, akkor c értéke a lesz, másként b.
A végeredmény (1) jól mutatja a kifejezés helyességét. A kód olvashatóságát talán kissé növeli, ha a hagyományos feltételmegadáshoz hasonlóan zárójelezzük a feltételt, ám ettől a kód tartalmilag nem fog megváltozni:
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = (a < b) ? a : b;
System.out.println(c);
}
}
Végeredmény:
1
Természetesen mindez implementálható a "klasszikus" if-else kifejezéssel is:
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 0;
if(a < b){
c = a;
}
else
c = b;
System.out.println(c);
}
}
Végeredmény:
1
Könnyen észrevehetjük a rövid if kifejezés előnyeit és hátrányait:
-
rövidebb és tömörebb a kód, ezért gyorsabban értékelődik ki és fut le,
-
ám éppen emiatt jóval nehezebb olvasni, visszafejteni, mintegy elveszti a gondolatközpontúságot.
A rövid if természetesen használható más adattípusok esetében is. Alább például működését String típuson tanulmányozhatjuk:
public class Main {
public static void main(String[] args) {
int legyekSzama = 3;
String fontosUzenet = "A házban "
+ (legyekSzama > 1 ? "több
légy (" + legyekSzama + " db)": "csak 1 légy") + " repked.";
System.out.println(fontosUzenet);
}
}
Végeredmény:
A házban több légy (3 db) repked.