GP Coder

Trang chia sẻ kiến thức lập trình Java

  • Java Core
    • Basic Java
    • OOP
    • Exception Handling
    • Multi-Thread
    • Java I/O
    • Networking
    • Reflection
    • Collection
    • Java 8
  • Design pattern
    • Creational Pattern
    • Structuaral Pattern
    • Behavior Pattern
  • Web Service
    • SOAP
    • REST
  • Java library
    • Report
    • Json
    • Unit Test
  • All
Trang chủ Java Core Basic Java Mệnh đề Switch-case trong java

Mệnh đề Switch-case trong java

Đăng vào 26/10/2017 Được đăng bởi GP Coder 1197 Lượt xem

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

  • 1 Trường hợp sử dụng
  • 2 Ví dụ về mệnh đề switch-case
  • 3 Ví dụ mệnh đề Switch-case nhiều hơn 1 case
  • 4 Ví dụ mệnh đề Switch-case khi không sử dụng lệnh break
  • 5 Vài điểm cần lưu ý khi sử dụng switch
  • 6 So sánh giữa if và switch trong lập trình Java

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.

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

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

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

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).

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

ifswitch
Mỗi if có biểu thức logic bên trong nó để định giá trị là đúng hay saiMỗ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àoBiểu thức phải định giá trị là byte, short, chart, int hoặc enum
Chỉ một khối lệnh được thực thiNế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.

5.0
01

Chuyên mục: Basic Java Được gắn thẻ: Basic Java, Cấu trúc điều khiển

Mệnh đề if-else trong java
Vòng lặp for, while, do-while trong Java

Có thể bạn muốn xem:

  • Tránh lỗi ConcurrentModificationException trong Java như thế nào? (27/08/2018)
  • Mệnh đề if-else trong java (26/10/2017)
  • Hướng dẫn sử dụng Java Annotation (04/12/2017)
  • Quản lý bộ nhớ trong Java với Heap Space vs Stack (28/10/2017)
  • Kiểu dữ liệu Ngày Giờ (Date Time) trong java (29/10/2017)

Bình luận

bình luận

Tìm kiếm

Bài viết mới

  • Sử dụng Hibernate Tool tạo các Hibernate Entity một cách tự động từ các table 26/11/2019
  • Các Annotation của Hibernate 13/11/2019
  • Hibernate mapping type 01/11/2019
  • Cài đặt và sử dụng Hibernate 31/10/2019
  • Giới thiệu về Hibernate 28/10/2019

Xem nhiều

  • Xây dựng ứng dụng Client-Server với Socket trong Java (16538 lượt xem)
  • Lập trình đa luồng trong Java (Java Multi-threading) (12536 lượt xem)
  • Từ khóa static và final trong java (10465 lượt xem)
  • Hướng dẫn sử dụng String Format trong Java (8367 lượt xem)
  • Lấy ngày giờ hiện tại trong Java (7650 lượt xem)

Nội dung bài viết

  • 1 Trường hợp sử dụng
  • 2 Ví dụ về mệnh đề switch-case
  • 3 Ví dụ mệnh đề Switch-case nhiều hơn 1 case
  • 4 Ví dụ mệnh đề Switch-case khi không sử dụng lệnh break
  • 5 Vài điểm cần lưu ý khi sử dụng switch
  • 6 So sánh giữa if và switch trong lập trình Java

Lưu trữ

Thẻ đánh dấu

Annotation AOP Apache Poi Authentication Basic Java Behavior Pattern Collection Creational Design Pattern Cấu trúc điều khiển Database Dependency Injection Design pattern Eclipse Exception Executor Service Google Guice Gson Hibernate How to IDE IO Jackson Java 8 Java Core JDBC JDK Jersey JPA json JUnit JWT Mockito Multithreading OOP Performance PowerMockito Reflection Report REST SOAP Structuaral Pattern Swagger Thread Pool Unit Test Webservice

Liên kết website

Design Pattern

  • Refactoring Guru
  • Source Making

Lập trình Java

  • JavaTpoint
  • JavaWorld
  • Journaldev
  • TutorialsPoint
  • W3Schools Online Web Tutorials

Liên kết web

  • IT Phú Trần

Giới thiệu

GP Coder là trang web cá nhân, được thành lập với mục đích lưu trữ, chia sẽ kiến thức đã học và làm việc của tôi. Các bài viết trên trang này chủ yếu về ngôn ngữ Java và các công nghệ có liên quan đến Java như: Spring, JSF, Web Services, Unit Test, Hibernate, SQL, ...
Hi vọng góp được chút ít công sức cho sự phát triển cộng đồng Coder Việt.

Tìm kiếm các bài viết của GP Coder với Google Search

Liên hệ

Các bạn có thể liên hệ với tôi thông qua:
  • Trang liên hệ
  • Linkedin: gpcoder
  • Email: contact@gpcoder.com
  • Skype: ptgiang56it

Copyright 2019 © GP Coder · All Rights Reserved · Giới thiệu · Chính sách · Điều khoản · Liên hệ ·

sponsored