Toán tử là các kí tự dùng để thao tác với các biến, có thể là một, hai hoặc ba biến.
Toán tử cũng có thứ tự, nếu trong một biểu thức có nhiều toán tử thì toán tử nào có thứ tự cao hơn thì sẽ được thực hiện trước.
Dưới đây là bảng các toán tử và thứ tự ưu tiên của chúng, từ trên xuống dưới và từ trái qua phải:
e++ e-- ++e --e +e -e ~ ! * / % + - << >> >>> < > <= >= instanceof == != & ^ | && || ? : = += -= *= /= %= &= ^= |= <<= >>= >>>=
Toán tử gán
Toán tử gán làm nhiệm vụ gán giá trị cho biến, kí hiệu là dấu “=
“.
int gear = 1; int speed = 0;
Toán tử số học
Đây là các toán tử thực hiện các phép cộng, trừ, nhân, chia như trong toán học, khác ở chỗ là đối với phép chia số nguyên thì ở đây có 2 phép chia lấy phần nguyên và phép chia lấy phần dư chứ không tính thành số thực.
+ | Cộng |
– | Trừ |
* | Nhân |
/ | Chia lấy phần nguyên |
% | Chia lấy phần dư |
Ví dụ:
int result = 1 + 2; // = 3 result = 3 - 1; // = 2 result = 2 * 2; // = 4 result = 4 / 3; // = 1 result = 10 % 7; // = 3
Chúng ta có thể kết hợp với toán tử gán để hợp thành toán tử ghép như sau:
x += 1; // Tương đương x = x + 1
Toán tử một toán hạng
Chúng là các toán tử chỉ làm việc với một biến duy nhất.
+ | Chỉ định giá trị dương cho biến (tuy nhiên bình thường không có thì cũng là số dương) |
– | Chỉ định giá trị âm cho biến |
++ | Tăng giá trị lên một đơn vị |
— | Giảm giá trị đi một đơn vị |
! | Đảo ngược giá trị của biến boolean |
Ví dụ:
int result = +1; // result = 1 result--; // result = 0 result++; // result = 1 result = -result; // result = -1 boolean successs = false; // success = false success = !success; // success = true
Toán tử ++
và --
có thể viết trước hoặc sau biến, ví dụ ++result
, result++,
cả 2 cách đều cho ra giá trị giống nhau, sự khác nhau là ++result
sẽ tăng giá trị của result
lên n
rồi trả về n,
còn result++
sẽ tăng result
lên n
rồi trả về n - 1
.
Toán tử quan hệ
Các toán tử này xác định xem một toán hạng lớn hơn, bé hơn, khác hay bằng một toán tử khác, kết quả là một giá trị boolean
(true
hoặc false
), kí hiệu của chúng cũng rất dễ nhận biết.
== |
Bằng |
!= |
Không bằng |
> |
Lớn hơn |
>= |
Lớn hơn hoặc bằng |
< |
Bé hơn |
<= |
Bé hơn hoặc bằng |
Ví dụ:
int value1 = 1; int value2 = 2; boolean check = value1 == value2; // check = false check = value1 != value2; // check = true check = value1 < value2; // check = true check = value1 > value2; // check = false
Toán tử điều kiện
Toán tử điều kiện gồm có 2 toán tử là &&
và ||
. Chúng thực hiện điều kiện AND
và OR
và trả về kết quả là một giá trị boolean
. Đây là các toán tử 2 toán hạng và các toán hạng được đánh giá từ trái sang phải.
Ví dụ:
int value1 = 1; int value2 = 2; if((value1 == 1) && (value2 == 2)) System.out.println("value1 = 1 and value2 = 2"); if((value1 == 1) || (value2 == 1)) System.out.println("value1 = 1 OR value2 = 1");
Ngoài ra còn có một toán tử khác nữa là ?:,
đây là toán tử thực hiện câu lệnh if-else
(chúng ta sẽ tìm hiểu sau), toán tử này thao tác với 3 toán hạng. Cú pháp là x ? y : z,
ý nghĩa là nếu x = true
thì trả về y
, ngược lại trả về z.
Ví dụ:
int value1 = 1; int value2 = 2; int result; boolean condition = true; result = condition ? value1 : value2; // result = value1
Toán tử instanceof
Toán tử instanceof
so sánh toán hạng với một kiểu dữ liệu nào đó để kiểm tra xem toán hạng đó có phải mang kiểu dữ liệu đó hay không. Chúng ta sẽ không đi sâu vào toán tử này ở đây.
Toán tử thao tác bit
Đây là các toán tử dùng để dịch chuyển hoặc đảo ngược các bit của các giá trị số nguyên và số thực.
~ |
Đảo ngược các bit của một số |
<< |
Dịch các bit của một số về bên trái một lần |
>> |
Dịch các bit của một số về bên phải một lần |
& |
Thực hiện phép toán AND |
^ |
Thực hiện phép toán XOR |
| |
Thực hiện phép toán OR |
Ví dụ:
int eight = 8; eight = ~eight; // eight = 7, vì 8 trong hệ nhị phân là 1000, // đảo ngược thành 0111 tức là 7 trong hệ thập phân int val = 8 & 4; // val = 0, vì 8 = 1000, 4 = 0100, // 1000 & 0100 = 0000 tức là 0 trong hệ 10