Trong toán học chúng ta có độ ưu tiên giữa các phép tính cộng trừ nhân chia, trong dấu ngoặc thì trong Java cũng có những điều tương tự về độ ưu tiên giữa các toán tử nếu chúng được dùng chung trong cùng một biểu thức. Bài viết này, chúng ta hãy cùng tìm hiểu về độ ưu tiên của các toán tử trong Java các bạn nhé!
Java đã định nghĩa cho chúng ta các nguyên tắc để xác định độ ưu tiên của các toán tử trong Java. Bảng dưới đây được xây dựng trên nguyên tắc của nó, những toán tử nào trên đầu sẽ có độ ưu tiên cao hơn và trong một nhóm thì độ ưu tiên của chúng là giống nhau và việc tính toán sẽ từ trái sang phải.
Độ ưu tiên |
a++, a– |
++a, –a, +a, -a, ! |
* (nhân), / (chia), % (chia lấy dư) |
+ (cộng), – (trừ) |
<, >, <=, >= |
==, != |
&&, || |
=, +=, -=, *=, /=, %= |
Ví dụ:
1 2 |
int a = 12, b = 8, c = 30; System.out.println(a % b * c + a / b); |
Trong biểu thức trên, các toán tử *, /, % sẽ được tính toán trước. Biểu thức a % b * c có 2 toán tử là % và * cùng độ ưu tiên nên việc tính toán sẽ từ trái sang phải. a % b ra kết quả là 4 nhân với 30 sẽ ra 120. Biểu thức a / b sẽ ra kết quả 1. Và kết quả cuối cùng sẽ là 120 + 1 = 121.
Có một cách để chúng ta chỉnh sửa độ ưu tiên mặc định của các toán tử đó là sử dụng dấu ngoặc đơn. Những biểu thức nằm trong dấu ngoặc đơn sẽ được Java tính toán trước, sau khi xong những biểu thức đó, thứ tự tính toán tiếp theo sẽ dựa vào độ ưu tiên.
Lấy lại ví dụ trên và thêm dấu ngoặc đơn như sau:
1 2 |
int a = 12, b = 8, c = 30; System.out.println((a % b) * (c + a) / b); |
thì giá trị cuối cùng sẽ là: 21.
Lâm
Ví dụ 1 mình test ra kết quả 81
Khanh Nguyen
Phải là 121 chứ nhỉ? Sorry, mình tính nhầm.