Switch-Lauseet Javassa
Pyyhkäise näyttääksesi valikon
Tähän asti if, else ja else if ovat olleet pääasialliset työkalut erilaisten tilanteiden käsittelyyn. Ne toimivat hyvin ehtojen, arvoalueiden tai vertailujen tarkistamiseen.
Joskus emme kuitenkaan vertaile arvoalueita lainkaan — haluamme vain tarkistaa yhden muuttujan useita tarkkoja arvoja vastaan. Esimerkiksi:
- asiakas valitsee maksutavan;
- kahvitilauksella on tietty noutotapa;
- kanta-asiakas valitsee palkkiotason.
Tällöin switch-lauseet ovat hyödyllisiä — ne vertaavat yhtä arvoa useisiin tarkkoihin vaihtoehtoihin selkeämmin ja järjestelmällisemmin.
Rakenne
switch (variable) {
case "value1" -> {
// code
}
case "value2" -> {
// code
}
default -> {
// fallback code
}
}
Java käy läpi jokaisen case-kohdan yksi kerrallaan, kunnes löytää sopivan.
Esimerkki
Main.java
1234567891011121314151617181920212223242526package com.example; public class Main { public static void main(String[] args) { String pickupType = "delivery"; switch (pickupType) { case "pickup": System.out.println("Your coffee will be ready at the counter"); break; case "delivery": System.out.println("Your coffee is on the way"); break; case "dine-in": System.out.println("Enjoy your coffee inside the cafe"); break; default: System.out.println("Unknown order type"); break; } } }
Java tarkistaa pickupType-arvon tapaus kerrallaan — "pickup" ei täsmää, "delivery" täsmää, joten tulostetaan "Your coffee is on the way" ja break lopettaa switchin välittömästi. Alhaalla oleva default-lohko toimii kuin lopullinen else — se suoritetaan vain, jos mikään tapaus ei täsmää.
Java 14+ — Uusi switch-syntaksi
Java 14:ssä ja uudemmissa otettiin käyttöön uusi syntaksi, jossa käytetään ->-nuolta:
switch (pickupType) {
case "pickup" -> System.out.println("Your coffee will be ready at the counter");
case "delivery" -> System.out.println("Your coffee is on the way");
case "dine-in" -> System.out.println("Enjoy your coffee inside the cafe");
default -> System.out.println("Unknown order type");
}
Mitä muuttui:
break-lausetta ei tarvita;- käytetään
->:-merkin sijaan; - jokainen tapaus on automaattisesti eristetty — ei riskiä läpiviennistä;
- selkeämpi ja helpompi lukea.
Molemmat versiot toimivat samalla tavalla — uusi syntaksi on vain modernimpi ja turvallisempi.
Hyvä muistisääntö:
- Käytä
if/else ifvertailuihin ja alueisiin; - Käytä
switchkun tarkistetaan yhtä arvoa monia tarkkoja vaihtoehtoja vastaan;
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme