Biểu thức số học
1. Biểu thức là gì?
Phần tiêu đề “1. Biểu thức là gì?”Một biểu thức (expression) là sự kết hợp giữa các toán hạng (số, biến) và toán tử, cho ra một giá trị:
int result = (5 + 3) * 2 - 1; // result = 152. Thứ tự ưu tiên toán tử (operator precedence)
Phần tiêu đề “2. Thứ tự ưu tiên toán tử (operator precedence)”Khi một biểu thức có nhiều toán tử, Java tính theo thứ tự ưu tiên nhất định (từ cao đến thấp, rút gọn các nhóm liên quan số học):
| Thứ tự | Toán tử |
|---|---|
| 1 (cao nhất) | () dấu ngoặc |
| 2 | ++, -- (tăng/giảm), - (dấu âm một ngôi) |
| 3 | *, /, % |
| 4 | +, - |
| 5 (thấp) | =, +=, -=… (toán tử gán) |
int result = 2 + 3 * 4; // = 2 + 12 = 14 (nhân trước cộng)int result2 = (2 + 3) * 4; // = 5 * 4 = 20 (ngoặc được tính trước)Khi các toán tử có cùng độ ưu tiên (ví dụ + và -), Java tính từ trái sang phải.
3. Nên dùng ngoặc để rõ ràng
Phần tiêu đề “3. Nên dùng ngoặc để rõ ràng”Dù nắm rõ thứ tự ưu tiên, việc thêm ngoặc () giúp code dễ đọc hơn và tránh nhầm lẫn:
double average = (a + b + c) / 3.0; // Rõ ràng: cộng trước, chia sau4. Trộn kiểu dữ liệu trong biểu thức (type promotion)
Phần tiêu đề “4. Trộn kiểu dữ liệu trong biểu thức (type promotion)”Khi biểu thức có nhiều kiểu số khác nhau, Java tự động nâng kiểu (widening) toán hạng nhỏ hơn lên kiểu lớn hơn trước khi tính:
int a = 5;double b = 2.0;double result = a + b; // a được nâng kiểu thành 5.0 trước, kết quả: 7.0Thứ tự nâng kiểu (từ thấp đến cao): byte/short/char → int → long → float → double.
5. Lớp Math cho các phép toán nâng cao
Phần tiêu đề “5. Lớp Math cho các phép toán nâng cao”Với các phép toán như lũy thừa, căn bậc hai, giá trị tuyệt đối…, dùng lớp Math trong java.lang:
System.out.println(Math.pow(2, 10)); // 1024.0 (2 mũ 10)System.out.println(Math.sqrt(16)); // 4.0 (căn bậc hai)System.out.println(Math.abs(-5)); // 5 (giá trị tuyệt đối)System.out.println(Math.max(3, 7)); // 7(Chi tiết đầy đủ về Math sẽ có ở bài riêng về số ngẫu nhiên và các hàm toán học.)
Tổng kết
Phần tiêu đề “Tổng kết”- Biểu thức số học tuân theo thứ tự ưu tiên: ngoặc → tăng/giảm/dấu âm → nhân/chia/dư → cộng/trừ
- Cùng độ ưu tiên thì tính từ trái sang phải
- Nên dùng ngoặc
()để code rõ ràng, tránh phụ thuộc trí nhớ về độ ưu tiên - Khi trộn kiểu số, Java tự động nâng kiểu nhỏ lên kiểu lớn hơn trước khi tính
- Lớp
Mathcung cấp các hàm toán học nâng cao nhưpow,sqrt,abs