1. Toán tử trong Java là gì?

Toán tử là các kí tự được định nghĩa sẵn trong ngôn ngữ dùng để thao tác với các biến, hay sử dụng để thực hiện một phép tính,chức năng nào đó.Trong lập trình Java sẽ có các toán tử cơ bản như sau:

  • Toán tử số học
  • Toán tử bit
  • Toán tử quan hệ
  • Toán tử logic
  • Toán tử điều kiện
  • Toán tử gán

Ví dụ: sử dụng toán tử +  để cộng hai giá trị với nhau:

class Main {
  public static void main(String[] args) {
    int x = 100 + 50;
    System.out.println(x);
  }
}

Kết quả

150

Mặc dù toán tử + thường được sử dụng để cộng hai giá trị với nhau giống như trong ví dụ trên. Tuy nhiên nó cũng có thể được sử dụng để cộng một biến và một giá trị hoặc một biến và một biến khác:

class Main {
  public static void main(String[] args) {
    int sum1 = 100 + 50;
    int sum2 = sum1 + 250;
    int sum3 = sum2 + sum2;
    System.out.println(sum1);
    System.out.println(sum2);
    System.out.println(sum3);  
  }
}

Kết quả

150
400
800

2. Toán tử số học trong Java

Toán tử số học trong Java là các toán tử sử dụng để thực hiện các phép tính toán với số trong Java. Ngoài các phép toán  cộng, trừ, nhân như toán học thì trong lập trình phép chia sẽ được chia làm hai toán tử riêng là chia lấy nguyên và chia lấy dư. Có các loại toán tử số học trong Java

Toán Tử Ví dụ Ý nghĩa
+ A+B Toán tử cộng : thêm B vào A
A-B Toán tử trừ : trừ B cho A
* A*B Toán tử nhân : nhân B với A
/ A/B Toán tử chia : Chia A cho B
% A%B Toán tử chia lấy dư : dư của phép chia A cho B
++ A++ Toán tử tăng dần : tăng giá trị biến A thêm 1 đơn vị : A++ = A+1
A– Toán tử giảm dần Giảm giá trị của biến A đi 1 đơn vị : A– = A – 1
+= B+=A Toán tử cộng và gán : Cộng các giá trị của toán hạng bên trái vào toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái B+=A : B = B+A
-= B-=A
*= B*=A
/= B/=A
%= B%=A

Hai giá trị sử dụng trong tính toán với toán tử số học được gọi là toán hạng trong Java. Bằng cách sử dụng toán tử số học, chúng ta có thể tính toán với các toán hạng, cũng như trả về kết quả của phép tính toán đó.

Ví dụ:

int nun;
num = 10 + 4;   // num = 14
num = 9 - 2;    // num = 7
num = 3 * 8;    // num = 24
num = 7 / 3;    // num = 2
num = 7 % 3;    // num = 1

Chú ý

Trong phép chia số nguyên cho số nguyên, để có thể thu về kết quả mong muốn, chúng ta cần lưu ý phải ép kiểu dữ liệu từ int sang double của một trong hai số nguyên đó. Mà bạn đã được học trong bài Ép kiểu dữ liệu trong Java.

Cần lưu ý tới kiểu của số trong phép chia với số 0 trong Java. Vì trong Java, kết quả của việc chia số 0 sẽ rất khác nhau tùy thuộc vào kiểu của toán hạng đã sử dụng để chia.

Ví dụ:

int i = 10 / 0;  // Error java.lang.ArithmeticException: / by zero
int j = 10 % 0;  // Error java.lang.ArithmeticException: / by zero

3. Toán tử gán trong Java

Toán tử gán được sử dụng để gán giá trị cho các biến. Ta có thể gán một giá trị vào một biến và có thể gán nhiều giá trị cho nhiều biến cùng một lúc. Toán tử gán được ký hiệu bằng dấu =

Ví dụ:

class Main {
  public static void main(String[] args) {
    int x = 10;
    System.out.println(x);
  }
}

Kết quả

10

Về cơ bản thì giá trị được chỉ định bên phải của toán tử gán sẽ được gán vào biến ở bên trái toán tử. Ngoài ra, bằng việc kết hợp toán tử gán với các toán tử khác, chúng ta có thể tạo ra các cặp toán tử gán với nhiều công dụng khác nhau trong Java như sau:

Toán tử Ví dụ Mô tả
+= A += B A = A + B
-= A -= B A = A – B
*= A *= B A = A * B
/= A /= B A = A / B
%= A %= B A = A % B
&= A &= B A = A & B
|= A |= B A = A | B
^= A ^= B A = A ^ B
<<= A <<= B A = A << B
>>= A >>= B A = A >> B

Khác với toán tử gán thông thường sẽ gán ngay giá trị ở vế phải vào biến ở vế trái, thì các cặp toán tử gán ở trên sẽ thực hiện phép tính giữa giá trị của biến ở vế trái với giá trị được gán ở vế phải, sau đó sẽ gán kết quả phép tính vào biến ở vế trái.

Ví dụ:

class Main {
  public static void main(String[] args) {
    int x = 10;
    x += 5;
    System.out.println(x);
  }
}

Kết quả

15

4. Toán tử so sánh trong Java

Toán tử so sánh được sử dụng để so sánh hai giá trị. Để thực hiện các phép so sánh trong Java, chúng ta sử dụng các toán tử so sánh trong Java được liệt kê trong bảng dưới đây:

Toán tử

Biểu thức điều kiện

Mô tả

== x == y x và y bằng nhau
!= x != y x và y không bằng nhau
> x > y x lớn hơn y
< x < y x nhỏ hơn y
>= x >= y x bằng hoặc lớn hơn y
>= x >= y x bằng hoặc lớn hơn y

Phép so sánh trong Java sẽ kết hợp toán tử so sánh cùng với hai giá trị ở hai vế trái phải thành một biểu thức điều kiện, sau đó kiểm tra biểu thức điều kiện này là đúng hay sai và đưa ra kết quả. Kết quả của các phép so sánh trong Java sẽ là kiểu boolean trong Java với hai giá trị là True (đúng) hoặc False (sai), và phép toán so sánh trong Java được sử dụng để cấu tạo biểu thức điều kiện được sử dụng trong câu lệnh if trong Java.

Ví dụ:

class Main{
    public static void main(String[] args) {
 		int a = 5;
        int b = 6;
        boolean result;
        System.out.println(result = a < b );
        System.out.println(result = a > b );
    	System.out.println(result = a == b );
    	System.out.println(result = a <= b );
    	System.out.println(result = a >= b );
    }
 
}

Kết quả

true
false
false
true
false

5. Toán tử logic trong Java

Toán tử logic được sử dụng để xác định logic giữa các biến hoặc giá trị. Để thực hiện các phép toán logic trong Java, chúng ta sử dụng các toán tử logic trong Java được liệt kê trong bảng dưới đây:

Toán tử

Tên

Biểu thức

&& AND X && Y
|| OR X || Y
! NOT ! X

Phép toán logic trong Java sẽ kiểm tra hai vế của toán tử logic là đúng hay sai và kết hợp chúng lại để đưa ra kết quả. Kết quả của phép toán logic trong Java sẽ là kiểu boolean trong Java với hai giá trị là true (đúng) hoặc false (sai).

Ví dụ:

  • Toán tử &&
class Main{
 
    public static void main(String[] args) {
        int age = 15;
        int rate = 5;
        boolean result;
        result = age == 15 && rate == 5;
        System.out.println(result); // true
        result = age == 16 && rate == 5;
        System.out.println(result); // false
        result = age == 15 && rate == 6;
        System.out.println(result); // false
        result = age == 17 && rate == 6;
        System.out.println(result); // false
    }
 
}

Kết quả

true
false
false
false
  • Toán tử ||
class Main{
 
    public static void main(String[] args) {
        int age = 15;
        int rate = 5;
        boolean result;
        result = age == 15 || rate == 5;
        System.out.println(result); // true
        result = age == 16 || rate == 5;
        System.out.println(result); // true
        result = age == 15 || rate == 6;
        System.out.println(result); // true
        result = age == 17 || rate == 6;
        System.out.println(result); // false
    }
 
}

Kết quả

true
true
true
false

6. Toán tử thao tác bit trong Java

Toán tử này dùng để xử lí dữ liệu dựa trên bit cho các kiểu dữ liệu số nguyên, số thực.

Toán tử

Mô tả

~ Đảo ngược giá trị bit của một số
<<  Dịch bit của một số về bên trái
>> Dịch bit của một số về bên phải
& Thực hiện phép toán AND
| Thực hiện phép toán OR
^ Thực hiện phép toán XOR

Ví dụ: Vì là làm việc trên bit nên có khả năng các bạn sẽ hơi khó hiểu một chút, mình sẽ giải thích chi tiết vào một bài khác về dạng toán tử này.

class Main{
 
    public static void main(String[] args) {
        int a = 8;
        System.out.println(Integer.toBinaryString(a)); // 8 trong binary la: 1000
        System.out.println(Integer.toBinaryString(~a)); // 0111
        System.out.println(Integer.toBinaryString(a << 1)); // 10000
        System.out.println(Integer.toBinaryString(a << 2)); // 100000
        System.out.println(Integer.toBinaryString(a >> 1)); // 0100
        System.out.println(Integer.toBinaryString(a >> 2)); // 0010
        System.out.println(Integer.toBinaryString(a & 2)); // 0
        System.out.println(Integer.toBinaryString(a | 2)); // 1010
    }
 
}

Kết quả

1000
11111111111111111111111111110111
10000
100000
100
10
0
1010

7. Thứ tự ưu tiên toán tử trong Java

Toán tử trong lập trình cũng có các thứ tự ưu tiên giống như các phép toán của chúng ta ngoài đời thực (vd: nhân chia trước cộng trừ sau). Trong Java độ ưu tiên các toán tử sẽ được sắp xếp như sau (Toán tử nào có độ ưu tiên cao hơn sẽ được thực thi trước).

Toán tử Mô tả
1 Các toán tử đơn như +,-,++,–
2 Các toán tử số học và các toán tử dịch như *,/,+,-,<<,>>
3 Các toán tử quan hệ như >,<,>=,<=,= =,!=
4 Các toán tử logic và Bit như &&,||,&,|,^
5 Các toán tử gán như =,*=,/=,+=,-=

Để thay đổi thứ tự ưu tiên trên một biểu thức, bạn có thể sử dụng dấu ngoặc đơn ():

  • Phần được giới hạn trong ngoặc đơn được thực hiện trước.
  • Nếu dùng nhiều ngoặc đơn lồng nhau thì toán tử nằm trong ngoặc đơn phía trong sẽ thực thi trước, sau đó đến các vòng phía ngoài.
  • Trong phạm vi một cặp ngoặc đơn thì quy tắc thứ tự ưu tiên vẫn giữ nguyên tác dụng.