switch som udtryk
Returnér værdier fra switch
switch som udtryk er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.
Sætninger kontra udtryk
En sætning udfører en handling. Et udtryk producerer en værdi. Moderne Java lader switch være et udtryk, så du kan tildele resultatet direkte til en variabel.
Tildeling af et switch-resultat
Når switch står på højre side af =, leverer hver gren værdien. Pilformen returnerer automatisk værdien efter ->.
public class Main {
public static void main(String[] args) {
int day = 6;
String type = switch (day) {
case 6, 7 -> "Weekend";
default -> "Weekday";
};
System.out.println(type);
}
}Semikolon efter blokken
Fordi et switch-udtryk indgår i en sætning, afsluttes det med et semikolon efter den afsluttende tuborgklamme. Hvis du glemmer det, får du en almindelig kompileringsfejl.
public class Main {
public static void main(String[] args) {
int n = 2;
int doubled = switch (n) {
case 1 -> 2;
case 2 -> 4;
default -> 0;
};
System.out.println(doubled);
}
}Udtømmende dækning
Et switch-udtryk skal dække enhver mulig værdi. For de fleste typer betyder det, at du skal medtage en default-gren, ellers kan koden ikke kompileres.
public class Main {
public static void main(String[] args) {
int score = 85;
char grade = switch (score / 10) {
case 10, 9 -> 'A';
case 8 -> 'B';
case 7 -> 'C';
default -> 'F';
};
System.out.println(grade);
}
}Enum kræver ikke default
Når du bruger switch på en enum og dækker alle konstanter, ved compileren, at det er udtømmende. En default-gren bliver valgfri.
public class Main {
enum Dir { NORTH, SOUTH, EAST, WEST }
public static void main(String[] args) {
Dir d = Dir.EAST;
String label = switch (d) {
case NORTH -> "Up";
case SOUTH -> "Down";
case EAST -> "Right";
case WEST -> "Left";
};
System.out.println(label);
}
}Direkte returnering
En metode kan returnere et switch-udtryk direkte med return, hvilket gør opslagmetoder korte og præcise.
public class Main {
static int sides(String shape) {
return switch (shape) {
case "triangle" -> 3;
case "square" -> 4;
case "pentagon" -> 5;
default -> 0;
};
}
public static void main(String[] args) {
System.out.println(sides("square"));
}
}Numeriske resultater
Grene kan returnere tal, udføre beregninger eller kalde metoder. Hver gren skal producere en værdi af samme type som den variabel, der tildeles værdien.
public class Main {
public static void main(String[] args) {
int month = 2;
int days = switch (month) {
case 2 -> 28;
case 4, 6, 9, 11 -> 30;
default -> 31;
};
System.out.println("Days: " + days);
}
}Brug af resultatet direkte
Værdien fra et switch-udtryk kan bruges med det samme, for eksempel i et kald til println.
public class Main {
public static void main(String[] args) {
int code = 1;
System.out.println("Status: " + switch (code) {
case 0 -> "OK";
case 1 -> "Warning";
default -> "Error";
});
}
}Konsistent type
Alle grene skal være enige om resultattypen. Hvis én gren returnerer en int og en anden en String, kan koden ikke kompileres. Sørg for, at grenene er konsistente.
public class Main {
public static void main(String[] args) {
int n = 3;
double factor = switch (n) {
case 1 -> 0.5;
case 2 -> 1.0;
default -> 1.5;
};
System.out.println(factor);
}
}Erstatning af ternære kæder
Et switch-udtryk er ofte lettere at læse end indlejrede ternære operatorer, når én værdi skal omsættes til mange resultater.
public class Main {
public static void main(String[] args) {
int rating = 4;
String stars = switch (rating) {
case 1 -> "*";
case 2 -> "**";
case 3 -> "***";
case 4 -> "****";
default -> "*****";
};
System.out.println(stars);
}
}Kombination med variable
Du kan bruge resultatet af et switch-udtryk i yderligere beregninger, ligesom enhver anden værdi.
public class Main {
public static void main(String[] args) {
int tier = 2;
int discount = switch (tier) {
case 1 -> 5;
case 2 -> 10;
default -> 0;
};
int price = 100 - discount;
System.out.println("Price: " + price);
}
}Hurtigt tjek
Hvorfor skal et switch-udtryk normalt indeholde en default-gren?
Opsummering
Du har lært at bruge switch som et udtryk:
- Det producerer en værdi, som du kan tildele eller returnere
- Afslut tildelingen med et semikolon
- Det skal være udtømmende (kræver normalt
default) - Enum-typer, der dækker alle konstanter, kræver ikke
default - Alle grene skal have samme resultattype
Lær Java med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 104
- Lektioner
- 374
Ofte stillede spørgsmål
Er lektionen “switch som udtryk” gratis?
Ja — hele teksten til “switch som udtryk” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “switch som udtryk”?
Returnér værdier fra switch Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Java Academy?
Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “switch som udtryk”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Java Academy-lektion?
Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Switch med pil-syntaks
- switch som udtryk
- Nøgleordet yield
- Cases med flere labels