Chuyển tới nội dung
Home » Java 8 Switch Case | Mệnh Đề Switch-Case Khi Không Sử Dụng ‘Break’

Java 8 Switch Case | Mệnh Đề Switch-Case Khi Không Sử Dụng ‘Break’

Java switch ⬇【4 minutes】

Ví dụ mệnh đề Switch-case khi không sử dụng lệnh break

Khi không sử dụng từ khóa break trong mệnh đề switch-case. Điều này có nghĩa là các khối lệnh sau case có giá trị phù hợp sẽ được thực thi.

package com.gpcoder; public class Switchtatement { public static void main(String[] args) { int month = 10; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println(“This month has 31 days”); case 2: System.out.println(“This month has 28 or 29 days”); case 4: case 6: case 9: case 11: System.out.println(“This month has 31 days”); } } }

Kết quả chương trình trên:

This month has 31 days This month has 28 or 29 days This month has 31 days

Java Switch Statements- FAQs

How to use switch statements in Java

To use switch statement in Java, you can use the following syntax:

switch (expression) { case value1: // code to execute if expression equals value1 break; case value2: // code to execute if expression equals value2 break; // … more cases default: // code to execute if none of the above cases match}

Can we pass null to a switch

No, you can not pass NULL to a switch statement as they require constant expression in its case.

Can you return to a switch statement

No, switch statements build a control flow in the program, so it can not go back after exiting a switch case.

Feeling lost in the vast world of Backend Development? It’s time for a change! Join our Java Backend Development – Live Course and embark on an exciting journey to master backend development efficiently and on schedule. What We Offer:

  • Comprehensive Course
  • Expert Guidance for Efficient Learning
  • Hands-on Experience with Real-world Projects
  • Proven Track Record with 100,000+ Successful Geeks

Last Updated :
16 Feb, 2024

Like Article

Save Article

Share your thoughts in the comments

Please Login to comment…

Mệnh đề switch-case trong java được sử dụng để thực thi 1 hoặc nhiều khối lệnh từ nhiều điều kiện.

Cú pháp:

switch (bieu_thuc) { case gia_tri_1: // Khối lệnh 1 break; //tùy chọn case gia_tri_2: // Khối lệnh 2 break; //tùy chọn …… case gia_tri_n: // Khối lệnh n break; //tùy chọn default: // Khối lệnh này được thực thi // nếu tất cả các điều kiện trên không thỏa mãn }

Ví dụ về mệnh đề switch-case:

public class SwitchExample { public static void main(String[] args) { int number = 20; switch (number) { case 10: System.out.println(“10”); break; case 20: System.out.println(“20”); break; case 30: System.out.println(“30”); break; default: System.out.println(“Not in 10, 20 or 30”); } } }

Kết quả:

Kết quả: 20

Nội dung chính

Java switch ⬇【4 minutes】
Java switch ⬇【4 minutes】

Example of Use

Let’s say we have the following nested if-else statements:


public String exampleOfIF(String animal) {
String result;
if (animal.equals("DOG") || animal.equals("CAT")) {
result = "domestic animal";
} else if (animal.equals("TIGER")) {
result = "wild animal";
} else {
result = "unknown animal";
}
return result;
}

The above code doesn’t look good and would be hard to maintain and reason about.

To improve readability, we could make use of a switch statement:


public String exampleOfSwitch(String animal) {
String result;
switch (animal) {
case "DOG":
result = "domestic animal";
break;
case "CAT":
result = "domestic animal";
break;
case "TIGER":
result = "wild animal";
break;
default:
result = "unknown animal";
break;
}
return result;
}

We compare the switch argument animal with the several case values. If none of the case values is equal to the argument, the block under the default label is executed.

Simply put, the break statement is used to exit a switch statement.

Java


public


class


GFG {


public


static


void


main(String[] args)


int


day =


String dayType;


String dayString;


switch


(day) {


case


dayString =


"Monday"


break


case


dayString =


"Tuesday"


break


case


dayString =


"Wednesday"


break


case


dayString =


"Thursday"


break


case


dayString =


"Friday"


break


case


dayString =


"Saturday"


break


case


dayString =


"Sunday"


break


default


dayString =


"Invalid day"


switch


(day) {


case


case


case


case


case


dayType =


"Weekday"


break


case


case


dayType =


"Weekend"


break


default


dayType =


"Invalid daytype"


System.out.println(dayString +


" is a "


+ dayType);

Output

Tuesday is a Weekday

#15 Switch Statement in Java
#15 Switch Statement in Java

Vài điểm cần lưu ý khi sử dụng switch

  • Cách mô tả các trường hợp có thể xảy ra, các bạn có thể mô tả từng trường hợp cụ thể, hoặc gom thành nhóm các trường hợp giống nhau. (case 1: case2: { })
  • Luôn phải thông báo kết thúc phần lệnh cần thực thi của mỗi trường hợp hoặc nhóm trường hợp thông qua câu lệnh break.
  • Luôn tận dụng câu lệnh default để thực thi những mệnh lệnh đối với trường hợp ngoại lệ (trường hợp khác).
  • Switch chỉ hỗ trợ các kiểu dữ liệu:

    • byte, short, char, int và các Wrapper class tương ứng.
    • enum, String và var (tương ứng với các type trên).
    • boolean, long, float, double và kiểu Wrapper tương ứng không được hỗ trợ bởi câu lệnh switch.

Các giá trị trong mỗi câu lệnh case phải là các giá trị hằng số tại thời điểm biên dịch (compile-time constant) và có cùng kiểu dữ liệu với giá trị trong switch.

Java


public


class


GFG {


public


static


void


main(String[] args)


int


day =


String dayString;


switch


(day) {


case


dayString =


"Monday"


break


case


dayString =


"Tuesday"


break


case


dayString =


"Wednesday"


break


case


dayString =


"Thursday"


break


case


dayString =


"Friday"


break


case


dayString =


"Saturday"


break


case


dayString =


"Sunday"


break


default


dayString =


"Invalid day"


System.out.println(dayString);

switch Statement in Java
switch Statement in Java

Multiple matching values

What if a fallthrough was desired? In the old ways, we would have to write a separate case for each value and let it fall through to the last case which will contain the operations.


// OLD (fallthrough) switch (x) { case 1: case 2: System.out.println("Valid values"); break; default: System.out.println("Unknown"); }

In the improved version, this can be done with a comma separated list of values.


// NEW (multiple values) switch (x) { case 1, 2: System.out.println("Valid values"); default: System.out.println("Unknown"); }

Java


import


java.io.*;


class


GFG {


public


static


void


main (String[] args) {


int


i=


switch


(i){


default


System.out.println(


"Default"


);


case


System.out.println(


);


break


case


System.out.println(


);


case


System.out.println(


);

Example:

Writing default in starting of switch statements

Java 19 . Câu lệnh switch ... case trong lập trình Java  | Phần 1 - Lập Trình Java Cơ Bản
Java 19 . Câu lệnh switch … case trong lập trình Java | Phần 1 – Lập Trình Java Cơ Bản

Java


public


class


GFG {


public


static


void


main(String[] args)


String Branch =


"CSE"


int


year =


switch


(year) {


case


System.out.println(


"elective courses : Advance english, Algebra"


);


break


case


switch


(Branch) {


case


"CSE"


case


"CCE"


System.out.println(


"elective courses : Machine Learning, Big Data"


);


break


case


"ECE"


System.out.println(


"elective courses : Antenna Engineering"


);


break


default


System.out.println(


"Elective courses : Optimization"


);

Output

elective courses : Machine Learning, Big Data

Overview

In this tutorial, we’ll learn what the switch statement is and how to use it.

The switch statement allows us to replace several nested if-else constructs and thus improve the readability of our code.

Switch has evolved over time. New supported types have been added, particularly in Java 5 and 7. Also, it continues to evolve — switch expressions will likely be introduced in Java 12.

Below we’ll give some code examples to demonstrate the use of the switch statement, the role of the break statement, the requirements for the switch argument/case values and the comparison of Strings in a switch statement.

Let’s move on to the example.

What's new in Java Switch | Switch Statement and Expression
What’s new in Java Switch | Switch Statement and Expression

switch Expressions

JDK 13 is now available and brings an improved version of a new feature first introduced in JDK 12: the switch expression.

In order to enable it, we need to pass –enable-preview to the compiler.

5.The New switch Expression

Let’s see what the new switch expression looks like when switching over months:


var result = switch(month) {
case JANUARY, JUNE, JULY -> 3;
case FEBRUARY, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER -> 1;
case MARCH, MAY, APRIL, AUGUST -> 2;
default -> 0;
};

Sending in a value such as Month.JUNE would set result to 3.

Notice that the new syntax uses the -> operator instead of the colon we’re used to with switch statements. Also, there’s no break keyword: The switch expression doesn’t fall through cases.

Another addition is the fact that we can now have comma-delimited criteria.

5.The yield Keyword

Going a bit further, there’s a possibility to obtain fine-grain control over what’s happening on the right side of the expression by using code blocks.

In such a case, we need to use the keyword yield:


var result = switch (month) {
case JANUARY, JUNE, JULY -> 3;
case FEBRUARY, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER -> 1;
case MARCH, MAY, APRIL, AUGUST -> {
int monthLength = month.toString().length();
yield monthLength * 4;
}
default -> 0;
};

While our example is a bit arbitrary, the point is that we’ve got access to more of the Java language here.

5.Returning Inside switch Expressions

As a consequence of the distinction between switch statements and switch expressions, it is possible to return from inside a switch statement, but we’re not allowed to do so from within a switch expression.

The following example is perfectly valid and will compile:


switch (month) {
case JANUARY, JUNE, JULY -> { return 3; }
default -> { return 0; }
}

However, the following code will not compile, as we are trying to return outside of an enclosing switch expression:


var result = switch (month) {
case JANUARY, JUNE, JULY -> { return 3; }
default -> { return 0; }
};

5.Exhaustiveness

When using switch statements, it doesn’t really matter if all cases are covered.

The following code, for example, is perfectly valid and will compile:


switch (month) {
case JANUARY, JUNE, JULY -> 3;
case FEBRUARY, SEPTEMBER -> 1;
}

For switch expressions though, the compiler insists that all possible cases are covered.

The following code snippet would not compile, as there’s no default case and not all possible cases are covered:


var result = switch (month) {
case JANUARY, JUNE, JULY -> 3;
case FEBRUARY, SEPTEMBER -> 1;
}

The switch expression, however, will be valid when all possible cases are covered:


var result = switch (month) {
case JANUARY, JUNE, JULY -> 3;
case FEBRUARY, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER -> 1;
case MARCH, MAY, APRIL, AUGUST -> 2;
}

Please note that the above code snippet does not have a default case. As long as all cases are covered, the switch expression will be valid.

Trường hợp sử dụng

Trong một vài trường hợp, bạn dùng quá nhiều cấu trúc rẽ nhánh dạng if-else, và điều kiện của các mã xử lý này có điểm tương đồng. Bạn có thể nghĩ đến việc sử dụng cấu trúc switch-case.

Ví dụ: bạn cần xét các tháng trong 1 năm. Chúng ta sẽ cần khá nhiều cấu trúc rẽ nhánh dạng if, if-else hoặc các dạng mở rộng hơn để xét tất cả 12 tháng. Tôi sẽ trình bày cụ thể ví dụ này ở trong phần Ví dụ mệnh đề Switch-case nhiều hơn 1 case.

Switch Case in Java #35
Switch Case in Java #35

Cách sử dụng cấu trúc switch case trong Java qua ví dụ

Sau đây mình sẽ cùng làm làm một ví dụ về cách sử dụng cấu trúc switch case trong các trường hợp khác nhau nhé.
Trường hợp #1: Có case thỏa mãn

public class SwitchCase {

public static void main(String[] args) {

int number = 2;

switch (number) {

case 1:

System.out.println(“Đây là số 1”);

break;

case 2:

System.out.println(“Đây là số 2”);

break;

case 3:

System.out.println(“Đây là số 3”);

break;

case 4:

System.out.println(“Đây là số 4”);

break;

case 5:

System.out.println(“Đây là số 5”);

break;

default:

System.out.println(“Chạy vào khối default”);

break;

Ở đây mình có biến

number = 2

. Như vậy khi switch chạy xuống

case 2

, nó thấy thỏa mãn giá trị của

case

bằng với giá trị của

number

đang giữ, khi đó nó sẽ thực thi khối lệnh trong

case 2

.
Ở đây là nó sẽ in ra màn hình dòng chữ

“Đây là số 2”

. Tiếp theo nó gặp lệnh

break

, lập tức nó sẽ thoát ra khỏi lệnh

switch

.

Kết quả sau khi chạy ví dụ switch case có case thỏa mãn

Trường hợp #2: Không có case nào thỏa mãn
Giả sử cũng đoạn code trên, nhưng bạn thay biến number bằng 6 chẳng hạn, khi đó không có giá trị của case nào bằng với giá trị của number.
Vì vậy nó sẽ chạy khối

default

.
Ở đây nó sẽ in ra dòng chữ

“Chạy vào khối default”

và kết thúc lệnh

switch

.
Trong trường hợp mà không có khối default thì nó sẽ không in ra gì cả.

Kết quả sau khi chạy ví dụ switch case không có case nào thỏa mãn

Trường hợp #3: Switch case không sử dụng break
Ở trường hợp này mình sẽ không sử dụng từ khóa break để xem nếu thiếu chúng thì cấu trúc switch case trong Java chạy thế nào nhé.

public class SwitchCase {

public static void main(String[] args) {

int number = 2;

switch (number) {

case 1:

System.out.println(“Đây là số 1”);

case 2:

System.out.println(“Đây là số 2”);

case 3:

System.out.println(“Đây là số 3”);

case 4:

System.out.println(“Đây là số 4”);

case 5:

System.out.println(“Đây là số 5”);

default:

System.out.println(“Chạy vào khối default”);

Như mình đã nói ở trên, nếu case không có

break

thì nó sẽ thực hiện đến hết, khi không còn khối nào thì thôi.
Ví dụ ở đây mình cho

number = 2

. Thì đầu tiên gặp

case 1

, không thỏa mãn.
Chạy tiếp xuống

case 2

, lúc này nó sẽ chạy khối lệnh trong

case 2

, nhưng

case 2

không có

break

, nó sẽ tiếp tục chạy xuống

case 3

, , và

default

.
Đây là kết quả:

Kết quả sau khi chạy ví dụ switch case không có sử dụng break

switch Argument and case Values

Now let’s discuss the allowed types of switch argument and case values, the requirements for them and how the switch statement works with Strings.

4.Data Types

We can’t compare all the types of objects and primitives in the switch statement. A switch works only with four primitives and their wrappers as well as with the enum type and the String class:

  • byte and Byte
  • short and Short
  • int and Integer
  • char and Character
  • enum
  • String

String type is available in the switch statement starting with Java 7.

enum type was introduced in Java 5 and has been available in the switch statement since then.

Wrapper classes have also been available since Java 5.

Of course, switch argument and case values should be of the same type.

4.No null Values

We can’t pass the null value as an argument to a switch statement.

If we do, the program will throw NullPointerException, using our first switch example:


@Test(expected=NullPointerException.class)
public void whenSwitchAgumentIsNull_thenNullPointerException() {
String animal = null;
Assert.assertEquals("domestic animal", s.exampleOfSwitch(animal));
}

Of course, we can’t also pass null as a value to the case label of a switch statement. If we do, the code will not compile.

4.Case Values as Compile-Time Constants

If we try to replace the DOG case value with the variable dog, the code won’t compile until we mark the dog variable as final:


final String dog="DOG";
String cat="CAT";
switch (animal) {
case dog: //compiles
result = "domestic animal";
case cat: //does not compile
result = "feline"
}

4.String Comparison

If a switch statement used the equality operator to compare strings, we couldn’t compare a String argument created with the new operator to a String case value correctly.

Luckily, the switch operator uses the equals() method under the hood.

Let’s demonstrate this:


@Test
public void whenCompareStrings_thenByEqual() {
String animal = new String("DOG");
assertEquals("domestic animal", s.exampleOfSwitch(animal));
}

Switch Case in Java 8 | Core Java
Switch Case in Java 8 | Core Java

Cú pháp cấu trúc switch case trong Java

Mô tả, cú pháp của cấu trúc switch case trong Java như sau:

// variable: Một biến để kiểm tra.

switch ( variable ) {

case value1:

// Làm gì đó tại đây …

break;

case value2:

// Làm gì đó tại đây …

break;

default:

// Làm gì đó tại đây …

Hoạt động của switch case như sau:

  • Switch sẽ kiểm tra giá trị của biến

    variable

    (nằm trong ngoặc đơn sau switch kia), và so sánh biến với từng giá trị khác nhau, lần lượt từ trên xuống dưới, mỗi giá trị cần so sánh gọi là một

    case

    .

Ở đoạn code trên, các giá trị để so sánh với biến

variable



value 1

,

value 2

. Khi một trường hợp đúng (

true

), khối lệnh ở trong

case

đó sẽ được thực thi.
Nếu tất cả các trường hợp đều sai (tức là các value ở case không bằng với biến variable), thì khối lệnh ở trong

default

sẽ được thực thi.
Lưu ý là khối

default

là không bắt buộc có ở cấu trúc switch case trong Java, tức là bạn có thể viết cũng được mà không viết cũng không bị lỗi.
Trong một

switch

có thể có rất nhiều

case

, nói chung là bao nhiêu

case

cũng được.
Khi thấy một case đúng, khối lệnh trong case đó sẽ được chạy.
Nếu không gặp lệnh

break

trong khối lệnh này, thì chương trình sẽ thực hiện tiếp các

case

bên dưới cho tới khi nó gặp lệnh

break

thì nó sẽ thoát ra khỏi switch.
Giả sử mà

switch

không có lệnh

break

nào, thì nó sẽ thực hiện đến khi không còn khối lệnh nào để chạy.
Chúng ta sẽ tìm hiểu kĩ hơn về từ khóa

break

trong phần sau.

Lưu ý!
Giá trị trong case phải là một giá trị cụ thể, không thể thực hiện phép toán so sánh hay tính toán trong case.

Đây là một câu lệnh khá đơn giản và dễ hiểu thôi.
Bạn có thể hình vào sơ đồ dưới đây để hình dung trực quan hơn nhé (Nguồn tham khảo sơ đồ: https://www.geeksforgeeks.org/switch-statement-in-java/)

Sơ đồ minh họa cấu trúc Switch Case trong Java
Lưu ý!
> Bài này chỉ hướng dẫn một cấu trúc rẽ nhánh trong Java. Nếu bạn muốn tìm hiểu về nhiều loại cấu trúc rẽ nhánh hơn thì hãy đọc bài: Tự học Java

Java


import


java.io.*;


class


GFG {


public


static


void


main(String[] args)


int


x =


int


y =


switch


(x) {


case


System.out.println(


);


break


case


System.out.println(


);


break


case


x + y:


System.out.println(


);


break


default


System.out.println(


"Default"


);

./GFG.java:16: error: constant expression required case x+y: ^1 error

Java Frameworks Package tutorials    by Mr. Nagoor Babu Sir
Java Frameworks Package tutorials by Mr. Nagoor Babu Sir

So sánh giữa if và switch trong lập trình Java

if switch
Mỗi if có biểu thức logic bên trong nó để định giá trị là đúng hay sai Mỗi case trong switch phải là một giá trị cụ thể, không có biểu thức logic bên trong.
Các biến trong biểu thức có thể định giá trị của bất kỳ kiểu giá trị nào Biểu thức phải xác định giá trị là byte (Byte), short (Short), char (Character), int (Integer), enum, String, var (tương ứng với các type trên).
Chỉ một khối lệnh được thực thi Nếu câu lệnh break bị bỏ qua, thì các câu lệnh từ case đúng trở về sau sẽ được thực hiện.

Như vậy là chúng ta đã tìm hiểu được các câu điều khiển: if và switch-case được sử dụng rất phổ biến trong quá trình lập trình trên Java.

Hẹn gặp lại các bạn trong bài viết tiếp theo.

Java Switch-case statement – Cấu trúc Switch-case trong Java

Câu lệnh

switch-case

có thể được xem như một dạng khác của câu lệnh if-else. Nó được sử dụng trong tình huống một biểu thức cho ra nhiều kết quả. Việc sử dụng câu lệnh switch-case cho phép việc lập trình dễ dàng và đơn giản hơn.

Cú pháp:


switch (expression) { case 'value': action 1 statement; break; case 'value': action 2 statement; break; : : case 'valueN': actionN statement (s); break; default: action default; }

Trong đó:

Ví dụ:

Đoạn chương trình sau xác định giá trị trong một biến nguyên và hiển thị ngày trong tuần được thể hiện dưới dạng chuỗi. Để kiểm tra các giá trị nằm trong khoảng 0 đến 6, chương trình sẽ thông báo lỗi nếu nằm ngoài phạm vi trên.


class SwitchDemo { public static void main(String agrs[]) { int day = 4; switch (day) { case 0: system.out.println("Sunday"); break; case 1: System.out.println("Monday"); break; case 2: System.out.println("Tuesday"); break; case 3: System.out.println("Wednesday"); break; case 4: System.out.println("Thursday"); break; case 5: System.out.println("Friday"); break; case 6: System.out.println("Satuday"); break; case 7: System.out.println("Saturday"); break; default: System.out.println("Invalid day of week"); } } }

Tìm hiểu về break và cách sử dụng break trong Java

Từ khóa break trong Java được sử dụng để dừng thực thi trong vòng lặp hoặc trong mệnh đề switch tại case được chỉ định.
Trong trường hợp các vòng lặp lồng nhau thì nó chỉ dừng vòng lặp đang chứa nó.
Ở trên mình đã nói khá chi tiết về break trong switch rồi. Bây giờ mình sẽ demo cho các bạn một ví dụ về break trong vòng lặp.
Ví dụ mình có một vòng for như dưới đây:

public class TimHieuBreak {

public static void main(String[] args) {

for (int i = 0; i < 10; i++) {

if (i == 5) {

break;

System.out.print(i + ” “);

Đoạn code trên có một vòng for cho chạy từ đến . Sau đó in ra màn hình giá trị của tại mỗi lần lặp.
Thì ở đây, nếu mà chạy đến thì ngay lập tức vòng lặp sẽ được dừng lại.
Vì vậy nó chỉ kịp in ra màn hình từ tới thôi.

Ví dụ sử dụng từ khóa break trong Java thông qua vòng lặp for đơn giản

Sử dụng từ khóa break cũng rất đơn giản và dễ hiểu phải không các bạn… Đây là một từ khóa sử dụng rất nhiều không chỉ trong Java mà còn trong các ngôn ngữ khác nữa.

Python or JavaScript - Which One Should YOU Learn?
Python or JavaScript – Which One Should YOU Learn?

Ví dụ về mệnh đề switch-case

package com.gpcoder; public class Switchtatement { public static void main(String[] args) { int month = 10; switch (month) { case 1: System.out.println(“January”); break; case 2: System.out.println(“February”); break; case 3: System.out.println(“March”); break; case 4: System.out.println(“April”); break; case 5: System.out.println(“May”); break; case 6: System.out.println(“June”); break; case 7: System.out.println(“July”); break; case 8: System.out.println(“August”); break; case 9: System.out.println(“September”); break; case 10: System.out.println(“October”); break; case 11: System.out.println(“November”); break; case 12: System.out.println(“December”); break; default: System.out.println(“Error”); break; } } }

Kết quả chương trình trên: October

Giá trị được chấp nhận trong câu lệnh case

Các giá trị trong mỗi câu lệnh case phải là các giá trị hằng số tại thời điểm biên dịch (compile-time constant) và có cùng kiểu dữ liệu với giá trị trong switch.

Ví dụ 1

Ví dụ 2

C switch statements 🔽
C switch statements 🔽

Java


import


java.io.*;


class


GFG {


public


static


void


main(String[] args)


int


x =


switch


(x +


) {


case


System.out.println(


);


break


case


System.out.println(


);


break


case


System.out.println(


);


break


default


System.out.println(


"Default"


);

A case label cannot be a variable or variable expression. It must be a constant expression.

Conclusion

In this article, we discussed the subtleties of using the switch statement in Java. We can decide whether to use switch based on readability and the type of the compared values.

The switch statement is a good candidate for cases when we have a limited number of options in a predefined set (e.g., days of the week).

Otherwise, we’d have to modify the code each time a new value is added or removed, which may not be feasible. For these cases, we should consider other approaches such as polymorphism or other design patterns such as Command.

As always, the complete JDK 8 code and JDK 13 code is available on GitHub.

The Java Tutorials have been written for JDK 8. Examples and practices described in this page don’t take advantage of improvements introduced in later releases and might use technology no longer available.See Java Language Changes for a summary of updated language features in Java SE 9 and subsequent releases.See JDK Release Notes for information about new features, enhancements, and removed or deprecated options for all JDK releases.

Unlike

if-then

and

if-then-else

statements, the

switch

statement can have a number of possible execution paths. A

switch

works with the

byte

,

short

,

char

, and

int

primitive data types. It also works with enumerated types (discussed in
Enum Types), the

String

class, and a few special classes that wrap certain primitive types:

Character

,

Byte

,

Short

, and

Integer

(discussed in
Numbers and Strings).

The following code example,

SwitchDemo

, declares an

int

named

month

whose value represents a month. The code displays the name of the month, based on the value of

month

, using the

switch

statement.

public class SwitchDemo { public static void main(String[] args) { int month = 8; String monthString; switch (month) { case 1: monthString = “January”; break; case 2: monthString = “February”; break; case 3: monthString = “March”; break; case 4: monthString = “April”; break; case 5: monthString = “May”; break; case 6: monthString = “June”; break; case 7: monthString = “July”; break; case 8: monthString = “August”; break; case 9: monthString = “September”; break; case 10: monthString = “October”; break; case 11: monthString = “November”; break; case 12: monthString = “December”; break; default: monthString = “Invalid month”; break; } System.out.println(monthString); } }

In this case,

August

is printed to standard output.

The body of a

switch

statement is known as a switch block. A statement in the

switch

block can be labeled with one or more

case

or

default

labels. The

switch

statement evaluates its expression, then executes all statements that follow the matching

case

label.

You could also display the name of the month with

if-then-else

statements:

int month = 8; if (month == 1) { System.out.println(“January”); } else if (month == 2) { System.out.println(“February”); } … // and so on

Deciding whether to use

if-then-else

statements or a

switch

statement is based on readability and the expression that the statement is testing. An

if-then-else

statement can test expressions based on ranges of values or conditions, whereas a

switch

statement tests expressions based only on a single integer, enumerated value, or

String

object.

Another point of interest is the

break

statement. Each

break

statement terminates the enclosing

switch

statement. Control flow continues with the first statement following the

switch

block. The

break

statements are necessary because without them, statements in

switch

blocks fall through: All statements after the matching

case

label are executed in sequence, regardless of the expression of subsequent

case

labels, until a

break

statement is encountered. The program

SwitchDemoFallThrough

shows statements in a

switch

block that fall through. The program displays the month corresponding to the integer

month

and the months that follow in the year:

public class SwitchDemoFallThrough { public static void main(String[] args) { java.util.ArrayList

futureMonths = new java.util.ArrayList

(); int month = 8; switch (month) { case 1: futureMonths.add(“January”); case 2: futureMonths.add(“February”); case 3: futureMonths.add(“March”); case 4: futureMonths.add(“April”); case 5: futureMonths.add(“May”); case 6: futureMonths.add(“June”); case 7: futureMonths.add(“July”); case 8: futureMonths.add(“August”); case 9: futureMonths.add(“September”); case 10: futureMonths.add(“October”); case 11: futureMonths.add(“November”); case 12: futureMonths.add(“December”); break; default: break; } if (futureMonths.isEmpty()) { System.out.println(“Invalid month number”); } else { for (String monthName : futureMonths) { System.out.println(monthName); } } } }

This is the output from the code:

August September October November December

Technically, the final

break

is not required because flow falls out of the

switch

statement. Using a

break

is recommended so that modifying the code is easier and less error prone. The

default

section handles all values that are not explicitly handled by one of the

case

sections.

The following code example,

SwitchDemo2

, shows how a statement can have multiple

case

labels. The code example calculates the number of days in a particular month:

class SwitchDemo2 { public static void main(String[] args) { int month = 2; int year = 2000; int numDays = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30; break; case 2: if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0)) numDays = 29; else numDays = 28; break; default: System.out.println(“Invalid month.”); break; } System.out.println(“Number of Days = ” + numDays); } }

This is the output from the code:

Number of Days = 29

In Java SE 7 and later, you can use a

String

object in the

switch

statement’s expression. The following code example,

StringSwitchDemo

, displays the number of the month based on the value of the

String

named

month

:

public class StringSwitchDemo { public static int getMonthNumber(String month) { int monthNumber = 0; if (month == null) { return monthNumber; } switch (month.toLowerCase()) { case “january”: monthNumber = 1; break; case “february”: monthNumber = 2; break; case “march”: monthNumber = 3; break; case “april”: monthNumber = 4; break; case “may”: monthNumber = 5; break; case “june”: monthNumber = 6; break; case “july”: monthNumber = 7; break; case “august”: monthNumber = 8; break; case “september”: monthNumber = 9; break; case “october”: monthNumber = 10; break; case “november”: monthNumber = 11; break; case “december”: monthNumber = 12; break; default: monthNumber = 0; break; } return monthNumber; } public static void main(String[] args) { String month = “August”; int returnedMonthNumber = StringSwitchDemo.getMonthNumber(month); if (returnedMonthNumber == 0) { System.out.println(“Invalid month”); } else { System.out.println(returnedMonthNumber); } } }

The output from this code is .

The

String

in the

switch

expression is compared with the expressions associated with each

case

label as if the

String.equals

method were being used. In order for the

StringSwitchDemo

example to accept any month regardless of case,

month

is converted to lowercase (with the

toLowerCase

method), and all the strings associated with the

case

labels are in lowercase.

Note: This example checks if the expression in the

switch

statement is

null

. Ensure that the expression in any

switch

statement is not null to prevent a

NullPointerException

from being thrown.

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh

Khi làm việc với switch statement, các bạn sẽ hay gặp những vấn đề sau:

package com.huongdanjava; public class SwitchExample { public static void main(String[] args) { int a = 1; int b = 2; switch (a + b) { case 2: System.out.println(“Khanh”); break; case 3: System.out.println(“Huong Dan Java”); case 4: System.out.println(“Lap Trinh Java”); default: System.out.println(“Hello”); break; } } }

Kết quả:

package com.huongdanjava; public class SwitchExample { public static void main(String[] args) { int a = 1; int b = 2; switch (a + b) { case 2: System.out.println(“Khanh”); break; case 3: System.out.println(“Huong Dan Java”); break; case 4: System.out.println(“Huong Dan Java”); break; default: System.out.println(“Hello”); break; } } }

Hoặc:

package com.huongdanjava; public class SwitchExample { public static void main(String[] args) { int a = 1; int b = 2; switch (a + b) { case 2: System.out.println(“Khanh”); break; case 3: case 4: System.out.println(“Huong Dan Java”); break; default: System.out.println(“Hello”); break; } } }

Những cách viết này bất tiện vì duplicate code hoặc chúng ta đôi khi không control được nên đặt break statement ở chỗ nào.

package com.huongdanjava; public class SwitchExample { public static void main(String[] args) { String message = “”; int n = 1; switch (n) { case 1: message = “Khanh”; break; case 2: message = “Huong Dan Java”; break; case 3: message = “Lap Trinh Java”; break; default: break; } System.err.println(message); } }

Để giải quyết những vấn đề trên, từ Java 12, các bạn có thể viết switch statement với những cải tiến như sau:

package com.huongdanjava; public class SwitchExample { public static void main(String[] args) { int a = 1; int b = 2; switch (a + b) { case 2 -> System.out.println(“Khanh”); case 3 -> System.out.println(“Huong Dan Java”); case 4 -> System.out.println(“Lap Trinh Java”); default -> System.out.println(“Hello”); } } }

Kết quả:

Đối với vấn đề thứ 2 thì các bạn có thể viết lại switch statement như sau:

package com.huongdanjava; public class SwitchExample { public static void main(String[] args) { int a = 1; int b = 2; switch (a + b) { case 2 -> System.out.println(“Khanh”); case 3, 4 -> System.out.println(“Huong Dan Java”); default -> System.out.println(“Hello”); } } }

Kết quả:

Còn đối vấn đề thứ ba thì bây giờ Java 12 đã hỗ trợ chúng ta return lại value với switch statement như sau:

package com.huongdanjava; public class SwitchExample { public static void main(String[] args) { int n = 1; var message = switch (n) { case 1 -> “Khanh”; case 2 -> “Huong Dan Java”; case 3 -> “Lap Trinh Java”; default -> “Hello”; }; System.out.println(message); } }

Kết quả:

Nếu các bạn muốn thêm code để xử lý business logic trong mỗi case của switch statement thì các bạn cần upgrade lên Java 13, sau đó thêm code và sử dụng từ khóa yield để return lại giá trị mà mình mong muốn. Ví dụ như sau:

package com.huongdanjava; public class SwitchExample { public static void main(String[] args) { int n = 1; var message = switch (n) { case 1 -> “Khanh”; case 2 -> “Huong Dan Java”; case 3 -> “Lap Trinh Java”; default -> “Hello”; }; System.out.println(message); } }

Kết quả:

Java 12 introduced switch expressions which improved the way we can write switch-case statements.

Over the next few versions, the switch-case statement has been improved several times. Let’s take a look at the improvements and compare them to the original switch-case statement.

Java New Features - Java 9, Java 10, Java 11, Java 12, Java13, Java 14, Java 15
Java New Features – Java 9, Java 10, Java 11, Java 12, Java13, Java 14, Java 15

Bạn đã hiểu cách sử dụng switch case trong Java chưa?

Như vậy mình và các bạn vừa tìm hiểu xong về cấu trúc switch case trong Java và từ khóa break. Hi vọng bạn hiểu cách sử dụng để vận dụng phù hợp.
Hẹn gặp lại các bạn ở các bài viết tiếp theo.

Đợi chút!
> Nếu bạn muốn học Java bài bản và làm được việc sau khóa học, hãy tham gia ngay Khóa học Java (fullstack) tại NIIT – ICT Hà Nội.

Chúc bạn học tốt.

HỌC VIỆN ĐÀO TẠO CNTT NIIT – ICT HÀ NỘI

Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!

Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội

SĐT: 02435574074 – 0914939543 – 0353655150

Email: [email protected]

Fanpage: https://facebook.com/NIIT.ICT/

#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python

Mệnh đề switch-case trong java được sử dụng để thực thi 1 hoặc nhiều khối lệnh từ nhiều điều kiện.

switch sẽ kiểm tra giá trị của một biến (variable), và so sánh biến với từng giá trị khác nhau từ trên xuống dưới, mỗi giá trị cần so sánh được gọi là một trường hợp (case). Khi một trường hợp đúng, khối lệnh của trường hợp đó sẽ được thực thi (execute).

Nếu tất cả các trường hợp đều sai, khối lệnh default sẽ được thực thi. Chú ý, trong cấu trúc của câu lệnh switch, có thể có hoặc không có khối lệnh default.

Khi tìm thấy một trường hợp đúng, khối lệnh của trường hợp đó sẽ được thực thi. Nếu không bắt gặp lệnh break trong khối lệnh này, chương trình sẽ thực hiện tiếp các khối lệnh bên dưới cho tới khi nó bắt gặp lệnh break, hoặc không còn khối lệnh nào để thực thi.

Lệnh break làm chương trình thoát ra khỏi switch.

Chú ý rằng với câu lệnh case phải là một giá trị cụ thể, không thể thực hiện phép tính so sánh hay tính toán trong case. Ví dụ: case (age < 18)

Nội dung

The yield keyword

When case has a single statement, as seen above, the value returned by the statement is returned by the switch expression.If case has a block, we need to explicitly return the value using the yield keyword.


// switch expressions with yield String word = switch (x) { case 1 -> { doSomething(); yield "One"; } case 2 -> "Two"; default -> "Unknown"; };

Old-style case blocks can also be used in switch expressions and can have a yield statement.When using a yield statement, a break statement is not required.

This is not recommended though. It’s best to stick to the new style in order to avoid confusion and unexpected mistakes.


// old-style case blocks with yield String word = switch (x) { case 1: doSomething(); yield "One"; case 2: yield "Two"; default: yield "Unknown"; };

DeMu vs Lucifron - Byzantine Mercenaries too Much for Jeanne D'Arc? - AoE4 Highlight Games #46
DeMu vs Lucifron – Byzantine Mercenaries too Much for Jeanne D’Arc? – AoE4 Highlight Games #46

Java


public


class


SizePrinter {


public


static


void


main(String[] args) {


int


sizeNumber =


switch


(sizeNumber) {


case


System.out.println(


"Extra Small"


);


break


case


System.out.println(


"Small"


);


break


case


System.out.println(


"Medium"


);


break


case


System.out.println(


"Large"


);


break


case


System.out.println(


"Extra Large"


);


break


default


System.out.println(


"Invalid size number"


);

Output:

Small

Some Important Rules for Java Switch Statements

  1. There can be any number of cases just imposing condition check but remember duplicate case/s values are not allowed.
  2. The value for a case must be of the same data type as the variable in the switch.
  3. The value for a case must be constant or literal. Variables are not allowed.
  4. The break statement is used inside the switch to terminate a statement sequence.
  5. The break statement is optional. If omitted, execution will continue on into the next case.
  6. The default statement is optional and can appear anywhere inside the switch block. In case, if it is not at the end, then a break statement must be kept after the default statement to omit the execution of the next case statement.

Note: Until Java-6, switch case argument cannot be of String type but Java 7 onward we can use String type argument in Switch Case.

The break Statement

Although most of the switch statements in real life imply that only one of the case blocks should be executed, the break statement is necessary to exit a switch after the block completes.

If we forget to write a break, the blocks underneath will be executed.

To demonstrate this, let’s omit the break statements and add the output to the console for each block:


public String forgetBreakInSwitch(String animal) {
switch (animal) {
case "DOG":
System.out.println("domestic animal");
default:
System.out.println("unknown animal");
}
}

Let’s execute this code forgetBreakInSwitch(“DOG”) and check the output to prove that all the blocks get executed:


domestic animal
unknown animal

So, we should be careful and add break statements at the end of each block unless there is a need to pass through to the code under the next label.

The only block where a break is not necessary is the last one, but adding a break to the last block makes the code less error-prone.

We can also take advantage of this behavior to omit break when we want the same code executed for several case statements.

Let’s rewrite the example in the previous section by grouping together the first two cases:


public String exampleOfSwitch(String animal) {
String result;
switch (animal) {
case "DOG":
case "CAT":
result = "domestic animal";
break;
case "TIGER":
result = "wild animal";
break;
default:
result = "unknown animal";
break;
}
return result;
}

All New Java 17 Features in 5 Minutes!
All New Java 17 Features in 5 Minutes!

Ví dụ mệnh đề Switch-case nhiều hơn 1 case

package com.gpcoder; public class Switchtatement { public static void main(String[] args) { int month = 10; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println(“This month has 31 days”); break; case 2: System.out.println(“This month has 28 or 29 days”); break; case 4: case 6: case 9: case 11: System.out.println(“This month has 31 days”); break; default: System.out.println(“Error”); break; } } }

Kết quả chương trình trên: This month has 31 days

break in switch case Statements

A break statement is optional. If we omit the break, execution will continue into the next case.

It is sometimes desirable to have multiple cases without “break” statements between them. For instance, let us consider the updated version of the above program, it also displays whether a day is a weekday or a weekend day.

Example:

Switch statement program without multiple breaks

Core Java, How can make Menu using switch case: in java | Menu Based Program Java Using Switch case
Core Java, How can make Menu using switch case: in java | Menu Based Program Java Using Switch case

Flowchart of Switch-Case Statement

This flowchart shows the control flow and working of switch statements:

Note: Java switch statement is a fall through statement that means it executes all statements if break keyword is not used, so it is highly essential to use break keyword inside each case.

Example: Finding Day

Consider the following Java program, it declares an int named day whose value represents a day(1-7). The code displays the name of the day, based on the value of the day, using the switch statement.

Exhaustiveness of switch expressions

Switch case statements are not required to be exhaustive. It is fine if no case matches and there is no default case.However, when using switch to return a value, it is required that all cases are covered and one of them should always match.

For e.g., when implementing a switch on numbers, the default case cannot be left out:


// missing default case String word = switch (x) { case 1 -> "One"; case 2 -> "Two"; }; /* gives the error: error: the switch expression does not cover all possible input values String word = switch (x) { ^ */

This means, we will always need to have a default case unless working with booleans.

The only exception to this is while using an enum and covering all possible enum values.

The below code works fine but it will give the same error as above if we remove one of the cases.


// switch expressions with enum public class MyClass { static enum Color { RED, GREEN, BLUE }; public static void main(String[] args) { Color color = Color.RED; System.out.println(switch (color) { case RED -> "Red"; case GREEN -> "Green"; case BLUE -> "Blue"; }); } }

That’s it for the improvements. One more feature worth mentioning is pattern matching but I have not covered it because it is still a preview feature.

An important point to note is that having an improved syntax does not mean the old syntax is invalid now. Both syntaxes work.

Thank you for reading. If you want to connect with me, you can find me on Twitter where I post regular Java tips and quizzes.

The switch statement in Java is a multi-way branch statement. In simple words, the Java switch statement executes one statement from multiple conditions.

It is like an if-else-if ladder statement. It provides an easy way to dispatch execution to different parts of code based on the value of the expression. The expression can be a byte, short, char, or int primitive data type. It tests the equality of variables against multiple values.

Note: Java switch expression must be of byte, short, int, long(with its Wrapper type), enums and string. Beginning with JDK7, it also works with enumerated types (Enums in java), the String class, and Wrapper classes.

Minimalistic RoadMap to JAVA Developer in 2024 | How to become a java developer in Tamil |abin #java
Minimalistic RoadMap to JAVA Developer in 2024 | How to become a java developer in Tamil |abin #java

Java


public


class


GFG {


public


enum


Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat }


public


static


void


main(String args[])


Day[] DayNow = Day.values();


for


(Day Now : DayNow) {


switch


(Now) {


case


Sun:


System.out.println(


"Sunday"


);


break


case


Mon:


System.out.println(


"Monday"


);


break


case


Tue:


System.out.println(


"Tuesday"


);


break


case


Wed:


System.out.println(


"Wednesday"


);


break


case


Thu:


System.out.println(


"Thursday"


);


break


case


Fri:


System.out.println(


"Friday"


);


break


case


Sat:


System.out.println(


"Saturday"


);

Output

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

Java


public


class


WrapperSwitchExample {


public


static


void


main(String[] args) {


Integer age =


25


switch


(age.intValue()) {


case


25


System.out.println(


"You are 25."


);


break


case


30


System.out.println(


"You are 30."


);


break


default


System.out.println(


"Age not matched."


);

Output:

You are 25.

Read More:

Modern Java - Top Features of Java 9 to 17
Modern Java – Top Features of Java 9 to 17

Java


import


java.io.*;


class


GFG {


public


static


void


main(String[] args)


int


i =


switch


(i) {


default


System.out.println(


"Default"


);


case


System.out.println(


);


break


case


System.out.println(


);


case


System.out.println(


);

Mệnh đề Switch-case khi không sử dụng ‘break’

Khi không sử dụng từ khóa ‘break’ trong mệnh đề switch-case. Điều này có nghĩa là các khối lệnh sau case có giá trị phù hợp sẽ được thực thi.

Ví dụ về mệnh đề switch-case:

public class SwitchExample2 { public static void main(String[] args) { int number = 20; switch (number) { case 10: System.out.println(“10”); case 20: System.out.println(“20”); case 30: System.out.println(“30”); default: System.out.println(“Not in 10, 20 or 30”); } } }

Kết quả:

20 30 Not in 10, 20 or 30

Chào bạn, trong bài viết này mình sẽ chia sẻ cho bạn một cấu trúc lệnh rẽ nhánh cơ bản và hay sử dụng đó là cấu trúc switch case trong Java.

Tìm hiểu cấu trúc Switch Case trong Java

Và sau đó chúng ta sẽ cùng đi tìm hiểu thêm về một thành phần không thể thiếu đó là từ khóa break. Từ khóa này có tác dụng gì trong cấu trúc rẽ nhánh?
Hãy cùng bắt đầu tìm hiểu trong bài viết dưới đây.
Nội dung của bài viết này gồm:

Chúng ta bắt đầu thôi…

Jobhopping!? 2 reasons you should stick to your employer (for now) and not come to Germany (yet)!
Jobhopping!? 2 reasons you should stick to your employer (for now) and not come to Germany (yet)!

Switch expressions

A big improvement is that switch statements can be used to return a value and therefore can be used as expressiond.

For example, we can use a switch-case block inline to print a value in words.


// switch expressions System.out.println(switch (x) { case 1 -> "One"; case 2 -> "Two"; default -> "Unknown"; });

Arrow Case Expression

Earlier, case blocks were required to end with a break statement. Otherwise, there would be a fall-through problem.


// OLD switch (x) { case 1: System.out.println("One"); break; case 2: System.out.println("Two"); break; default: System.out.println("Unknown"); }

Now, we can use an arrow case expression to simplify the case block. Only the statement appearing after the arrow will be executed if the case matches.


// NEW switch (x) { case 1 -> System.out.println("One"); case 2 -> System.out.println("Two"); default -> throw new IllegalArgumentException(); }

This is similar to lambda syntax. If there were multiple statements, we could use a block instead.


// NEW (with block) switch (x) { case 1 -> { System.out.println("One"); System.out.println("One again"); } case 2 -> System.out.println("Two"); default -> System.out.println("Unknown"); }

Java Tutorial For Beginners 10 - switch Statement in Java
Java Tutorial For Beginners 10 – switch Statement in Java

Keywords searched by users: java 8 switch case

Categories: Có được 54 Java 8 Switch Case

Các Cải Tiến Của Java Cho Switch Statement Từ Java 12 | Topdev
Các Cải Tiến Của Java Cho Switch Statement Từ Java 12 | Topdev
Switch Statement In Java - Youtube
Switch Statement In Java – Youtube
Switch Statements In Java - Geeksforgeeks
Switch Statements In Java – Geeksforgeeks
Switch Statement In Java - Youtube
Switch Statement In Java – Youtube
Các Cải Tiến Của Java Cho Switch Statement Từ Java 12 | Topdev
Các Cải Tiến Của Java Cho Switch Statement Từ Java 12 | Topdev
Java Switch - Javatpoint
Java Switch – Javatpoint
Switch Statement In Java – Study With Swati
Switch Statement In Java – Study With Swati
Java 12'S Switch Expressions In 5 Minutes
Java 12’S Switch Expressions In 5 Minutes
Case Statement In Java | Flow Diagram Of Switch-Case Statement In Java
Case Statement In Java | Flow Diagram Of Switch-Case Statement In Java
P10 Switch Case Statement Beginner Java & Ap Computer Science - Youtube
P10 Switch Case Statement Beginner Java & Ap Computer Science – Youtube
Switch Statement In C - Geeksforgeeks
Switch Statement In C – Geeksforgeeks
Switch Case Statement In Java Language - Codeforcoding
Switch Case Statement In Java Language – Codeforcoding
Cấu Trúc Switch Case Trong Java Qua Ví Dụ
Cấu Trúc Switch Case Trong Java Qua Ví Dụ
Cấu Trúc Switch Case Trong Java
Cấu Trúc Switch Case Trong Java
Mệnh Đề Switch-Case Trong Java - Học Java Miễn Phí Hay Nhất - Viettuts
Mệnh Đề Switch-Case Trong Java – Học Java Miễn Phí Hay Nhất – Viettuts
Java Part 8 Switch And Loops - Youtube
Java Part 8 Switch And Loops – Youtube
Programs Of Switch Case With And Without Break Statement | C Programs |  Studytonight
Programs Of Switch Case With And Without Break Statement | C Programs | Studytonight
Java 12'S Switch Expressions In 5 Minutes
Java 12’S Switch Expressions In 5 Minutes

See more here: kientrucannam.vn

See more: https://kientrucannam.vn/vn/

Tag:

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *