Java Switch Expression Syntax
A developer writes a method that processes a grade and returns a message using a switch expression. The code is:
```java
public static String getMessage(int grade) {
return switch (grade) {case 90, 80 -> "Excellent"; case 70, 60 -> "Good"; case 50 -> "Pass"; default -> "Fail";
}; }
```
Which statement is correct about this code?
Quick Answer
The correct answer is that the code compiles and runs correctly, returning the appropriate message. This is because Java 14 and later support switch expressions with the arrow syntax, where each case can list multiple constants separated by commas, as seen with `case 90, 80 -> "Excellent"`. The arrow form eliminates fall-through and does not require a `yield` statement when the right side is a single expression or a block—here each case directly yields a string literal. On the Oracle Certified Professional Java SE 17 Developer 1Z0-829 exam, this question tests your understanding of switch expression syntax with arrow, a common topic that distinguishes expressions from statements. A frequent trap is assuming that a `break` or `yield` is needed in the arrow form, but remember: with `->`, the right side is the result. For a quick memory tip: "Arrow points to the value, no break or yield needed."
⚠ Common exam trap
Many exam-takers confuse the arrow form's syntax with the colon form, incorrectly assuming 'yield' is always required, or they mistakenly think 'default' is optional in switch expressions, when in fact it is mandatory for exhaustiveness.
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
The code compiles and runs correctly, returning the appropriate message.
The switch expression uses the arrow form with a list of constants per case, which is valid syntax in Java 14+. The arrow form does not require a 'yield' statement when the right side is a single expression or block; here, each case yields a string literal directly. The 'default' clause is mandatory in a switch expression to cover all possible values, and it is correctly included.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✗
The code does not compile because the switch expression must be enclosed in parentheses.
Why it's wrong here
Switch expressions do not require parentheses; they are used as values directly.
- ✗
The code does not compile because the arrow form requires a 'yield' statement.
Why it's wrong here
In the arrow form, if the case is a single expression, 'yield' is not needed; it is implicit.
- ✓
The code compiles and runs correctly, returning the appropriate message.
Why this is correct
The switch expression is valid and will return the correct string for each grade.
- ✗
The code does not compile because 'default' is not allowed in a switch expression.
Why it's wrong here
Switch expressions require a default case or coverage of all possible values; default is allowed.
Go deeper
Related to this question
About these practice questions
One of 513 original 1Z0-829 practice questions on Courseiva, each with a full explanation and wrong-answer analysis — not exam dumps or protected exam content. Learn why practice questions differ from exam dumps →
Same concept, more angles
1 more way this is tested on 1Z0-829
These questions test the same concept from different angles. Work through them to make sure you can recognise it however the exam phrases it.
Variation 1. Given an enum Direction { NORTH, SOUTH, EAST, WEST } and a variable d of type Direction, which code snippet correctly uses a switch expression to map each direction to an abbreviation (N, S, E, W) without using a default branch?
medium- ✓ A.switch (d) { case NORTH -> "N"; case SOUTH -> "S"; case EAST -> "E"; case WEST -> "W"; }
- B.switch (d) { case NORTH: yield "N"; case SOUTH: yield "S"; case EAST: yield "E"; case WEST: yield "W"; }
- C.switch (d) { case NORTH -> "N"; case SOUTH -> "S"; case EAST -> "E"; }
- D.switch (d) { case NORTH: yield "N"; case SOUTH: yield "S"; case EAST: yield "E"; default: yield "W"; }
Why A: It uses the arrow syntax in a switch expression, which requires that all possible enum values are covered without a default branch. Since Direction has exactly four constants and each is mapped to a yield value via the arrow, the switch is exhaustive and compiles successfully.
JA
Written by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
This 1Z0-829 practice question is part of Courseiva's free Oracle certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the 1Z0-829 exam.