Các câu lệnh trong một file .java
được thực thi theo thứ tự từ trên xuống dưới, từ trái sang phải. Tuy nhiên có một số câu lệnh sẽ điều khiển hướng đi này theo một hướng khác, có thể là theo một điều kiện nào đó hoặc lặp đi lặp lại.
Câu lệnh if
Câu lệnh if
là câu lệnh cơ bản nhất trong số các câu lệnh điều khiển hướng đi của chương trình. Câu lệnh này cho chương trình biết chỉ thực hiện một số câu lệnh chỉ khi có một điều kiện nào đó cho kết quả là true
. Ví dụ:
class Bicycle { int speed = 0; void accelerate(int value) { speed = speed + value; if(speed > 10) { speed = 10; } } }
Trong đoạn code trên, chúng ta có lớp Bicycle
có phương thức accelerate()
nhận vào một giá trị, sau đó gán giá trị này cho thuộc tính speed
, rồi chúng ta sử dụng câu lệnh if(speed > 10)
, tức là nếu thuộc tính speed
có giá trị lớn hơn 10 thì thực hiện các câu lệnh trong khối lệnh sau đó, là gán giá trị cho speed
là 10
.
Câu lệnh if-else
Câu lệnh if-else
là mở rộng từ câu lệnh if
, tức là thêm một trường hợp nếu điều kiện cho kết quả false
(điều kiện sai) thì thực hiện một số câu lệnh nào đó. Ví dụ:
class Bicycle { int speed = 0; void accelerate(int value) { if(speed + value <= 10) { speed = speed + value; } else { speed = 10; } } }
Trong đoạn code trên, chúng ta lại có lớp Bicycle
và phương thức accelerate()
, trong đó chúng ta kiểm tra xem nếu speed + value
cho ra kết quả bé hơn hoặc bằng 10 thì cộng speed
bằng value
, để kiểm tra trường hợp ngược lại thì chúng ta dùng từ khóa else
và ghi các lâu lệnh phía sau đó, ở đây là gán giá trị 10 cho thuộc tính speed
.
Ngoài ra chúng ta có thể dùng câu lệnh else if
nhiều lần để kiểm tra nhiều điều kiện khác nhau, ví dụ:
class Score { int score = 8; String result = ""; void grade) { if(score >= 9) { result = "Exellent"; } else if(score >= 8) { result = "Good"; } else if(score >= 5) { result = "Average"; } else { result = "Below average"; } } }
Trong đoạn code trên chúng ta sử dụng câu lệnh if-else if-else
nhiều lần, mỗi lần chúng ta kiểm tra giá trị của thuộc tính score
và gán giá trị cho thuộc tính result
tương ứng, ở đây thuộc tính score
thỏa rất nhiều điều kiện nhưng khi chương trình gặp một điều kiện đúng thì chỉ thực hiện các câu lệnh trong điều kiện đó thôi.
Câu lệnh switch
Câu lệnh switch
cũng tương tự như các câu lệnh if
và if-else
, tuy nhiên cách kiểm tra là xem một biến nào đó có bằng một giá trị nào đó hay không, chứ không thể kiểm tra nhiều điều kiện như if
được, cũng vì cách kiểm tra đó cho nên switch
chỉ kiểm tra được một số kiểu dữ liệu cơ bản nhất định, bao gồm char
, byte
, short
, int
và một số lớp nhất định là String
, Character
, Byte
, Short
, Interger
. Ví dụ:
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; } } }
Trong đoạn code trên thì monthString
sẽ có giá trị là August
.
Khối lệnh phía sau câu lệnh switch
sẽ kiểm tra các giá trị của thuộc tính month
, để kiểm tra một giá trị thì chúng ta ghi từ khóa case,
rồi đến giá trị đó và dấu hai chấm. Theo sau là các câu lệnh cần thực hiện. Ngoài ra còn có một trường hợp đặc biệt là default
, các câu lệnh sau default
sẽ được thực hiện nếu không có case
nào thỏa điều kiện.
Cuối cùng là câu lệnh break
, câu lệnh này có tác dụng dừng thực hiện các câu lệnh điều kiện và vòng lặp (sẽ tìm hiểu sau). Lý do chúng ta sử dụng câu lệnh break
trong switch
là vì sau khi tìm được một giá trị phù hợp thì các giá trị phía sau case đó vẫn được thực thi. Trong đoạn code trên nếu chúng ta bỏ hết các câu lệnh break
, thì các case 9
. 10
, 11
, 12
và default
vẫn sẽ được thực thi.