Toán tử. Ví dụ về Toán tử trong JAVA

Toán tử là gì?

Toán tử (Operator) là các ký tự đặc biệt được quy ước để thực hiện một hành động nào đó trong lập trình. Trong Java có nhiều loại toán tử.

Ví dụ: +, -, *, /

Có nhiều loại toán tử trong Java như sau:

  • Toán tử Tăng / Giảm
  • Toán tử Toán học
  • Toán tử Dịch chuyển
  • Toán tử Quan hệ
  • Toán tử Bit
  • Toán tử Logic
  • Toán tử 3 Ngôi (Ternary)
  • Toán tử gán

Thứ tự ưu tiên các loại toán tử trong Java

Có rất nhiều loại toán tử trong Java cũng như các ngôn ngữ lập trình khác. Vậy nên, khi sử dụng chung cùng với nhau chúng cần phải tuân theo thứ tự ưu tiên nhất định.

Hãy xem ảnh sau để biết thứ tự ưu tiên của các loại toán tử trong Java:

Thứ tự ưu tiên các loại toán tử trong Java
Thứ tự ưu tiên các loại toán tử trong Java

Ví dụ về các loại toán tử trong Java

Toán tử, Ví dụ về Toán tử trong Java
Toán tử, Ví dụ về Toán tử trong Java

1. Toán tử đơn: ++, –, ~, !

class OperatorExample{  
  public static void main(String args[]){  
    int x=10;  
    System.out.println(x++);//10 (11)  
    System.out.println(++x);//12  
    System.out.println(x--);//12 (11)  
    System.out.println(--x);//10  
  }
}  

Kết quả nhận được là:

10
12
12
10

Một ví dụ khác giúp bạn hiểu rõ toán tử ++ và — hơn

class OperatorExample{  
  public static void main(String args[]){  
    int a=10;  
    int b=10;  
    System.out.println(a++ + ++a);//10+12=22  
    System.out.println(b++ + b++);//10+11=21  
  }
}  

Kết quả:

22
21

Ví dụ tiếp theo về ~ và !

class OperatorExample{  
  public static void main(String args[]){  
    int a=10;  
    int b=-10;  
    boolean c=true;  
    boolean d=false;  
    System.out.println(~a);
    System.out.println(~b);
    System.out.println(!c); 
    System.out.println(!d); 
  }
}

Kết quả:

-11
9
false
true

2. Ví dụ về toán tử toán học trong Java

Ví dụ 1:

class OperatorExample{  
  public static void main(String args[]){  
    int a=10;  
    int b=5;  
    System.out.println(a+b);//15  
    System.out.println(a-b);//5  
    System.out.println(a*b);//50  
    System.out.println(a/b);//2  
    System.out.println(a%b);//0  
  }
}  

Kết quả:

15
5
50
2
0

Ví dụ 2:

class OperatorExample{  
  public static void main(String args[]){  
    System.out.println(10*10/5+3-1*4/2);  
  }
}

Kết quả:

21

3. Ví dụ về toán tử Dịch chuyển trong JAVA

Ví dụ về toán tử Dịch trái trong JAVA

Toán tử dịch chuyển trái trong Java được sử dụng để dịch chuyển tất cả các bit trong một giá trị sang bên trái của một số lần được chỉ định.

class OperatorExample{  
  public static void main(String args[]){  
    System.out.println(10<<2);//10*2^2=10*4=40  
    System.out.println(10<<3);//10*2^3=10*8=80  
    System.out.println(20<<2);//20*2^2=20*4=80  
    System.out.println(15<<4);//15*2^4=15*16=240  
  }
}  

Kết quả:

40
80
80
240

Ví dụ về toán tử Dịch phải trong JAVA

Ví dụ toán tử dịch chuyển trái: Toán tử dịch chuyển phải trong Java được sử dụng để dịch chuyển tất cả các bit trong một giá trị sang bên phải một số lần được chỉ định.

class OperatorExample{  
  public static void main(String args[]){  
    System.out.println(10>>2);//10/2^2=10/4=2  
    System.out.println(20>>2);//20/2^2=20/4=5  
    System.out.println(20>>3);//20/2^3=20/8=2  
  }
}

Kết quả:

2
5
2

So sánh toán tử >> và toán tử >>>

class OperatorExample{  
  public static void main(String args[]){  
    //Đối với số Dương, >> và >>> làm việc như nhau
    System.out.println(20>>2);  
    System.out.println(20>>>2);  
    //Đối với số Âm
    System.out.println(-20>>2);  
    System.out.println(-20>>>2);  
  }
}  

Kết quả:

5
5
-5
1073741819

Lý do của sự khác nhau này là toán tử >> bảo toàn bit dấu, trong khi đó toán tử >>> không bảo toàn bit dấu.

Nó cho kết quả là một số dương khi chúng ta áp dụng toán tử >>> trên một số âm. Và MSB (bit đầu tiên) được thay thế bằng 0.

4. So sánh toán tử Logic AND và toán tử Bit AND

class OperatorExample{  
  public static void main(String args[]){  
    int a=10;  
    int b=5;  
    int c=20;  
    System.out.println(a<b&&a<c);//false && true = false  
    System.out.println(a<b&a<c);//false & true = false  
  }
}

Kết quả:

false
false

Một ví dụ khác:

class OperatorExample{  
  public static void main(String args[]){  
    int a=10;  
    int b=5;  
    int c=20;  
    System.out.println(a<b&&a++<c);//false && true = false  
    System.out.println(a);//10 Vì điều kiện thứ 2 không được kiểm tra  
    System.out.println(a<b&a++<c);//false && true = false  
    System.out.println(a);//11 Vì điều kiện thứ 2 đã được kiểm tra   
  }
}

Kết quả:

false
10
false
11

5. So sánh toán tử Logic OR và Toán tử Bit OR

Toán tử Logic OR || không kiểm tra điều kiện thứ hai nếu điều kiện đầu tiên là ĐÚNG.

Và nó sẽ kiểm tra điều kiện thứ hai chỉ khi điều kiện đầu tiên là SAI.

Toán tử Bit OR | luôn kiểm tra cả hai điều kiện cho dù điều kiện đầu tiên là ĐÚNG hay SAI.

class OperatorExample{  
  public static void main(String args[]){  
    int a=10;  
    int b=5;  
    int c=20;  
    System.out.println(a>b||a<c);//true || true = true  
    System.out.println(a>b|a<c);//true | true = true  
    //|| vs |  
    System.out.println(a>b||a++<c);//true || true = true  
    System.out.println(a);//10 Vì điều kiện thứ 2 không được kiểm tra 
    System.out.println(a>b|a++<c);//true | true = true  
    System.out.println(a);//11 Vì điều kiện thứ 2 được kiểm tra  
  }
}  

Kết quả:

true
true
true
10
true
11

6. Toán tử 3 ngôi trong Java

Toán tử 3 ngôi trong Java dùng để thay thế cho câu lệnh if – else. Xem ngay ví dụ bên dưới để hiểu cách sử dụng

class OperatorExample{  
  public static void main(String args[]){  
    int a=2;  
    int b=5;  
    int min=(a<b)?a:b;  
    System.out.println(min);  
  }
}

Đoạn mã min = (a < b) ? a : b có thể được mô tả như sau:

  • Nếu a nhỏ hơn b thì gán min = a
  • Ngược lại thì gán min = b

Kết quả:

2

Một ví dụ khác,

class OperatorExample{  
  public static void main(String args[]){  
    int a=10;  
    int b=5;  
    int min=(a<b)?a:b;  
    System.out.println(min);  
  }
}

Kết quả:

5

7. Ví dụ về toán tử gán trong Java

Toán tử gán khá là dễ nên mình nghĩ sẽ không cần phải nói nhiều, bạn xem ví dụ là hiểu.

class OperatorExample{  
  public static void main(String args[]){  
    int a=10;  
    int b=20;  
    a+=4;//a=a+4 (a=10+4)  
    b-=4;//b=b-4 (b=20-4)  
    System.out.println(a);  
    System.out.println(b);  
  }
}

Kết quả

14
16

Một ví dụ khác về toán tử gán trong Java

class OperatorExample{  
  public static void main(String[] args){  
    int a=10;  
    a+=3;//10+3  
    System.out.println(a);  
    a-=4;//13-4  
    System.out.println(a);  
    a*=2;//9*2  
    System.out.println(a);  
    a/=2;//18/2  
    System.out.println(a);  
  }
}

Kết quả:

13
9
18
9

Ví dụ về toán tử gán với kiểu short

class OperatorExample{  
  public static void main(String args[]){  
    short a=10;  
    short b=10;  
    //a+=b;//a=a+b có vẻ rất tốt
    a=a+b;//Biên dịch lại lỗi vì 10+10=20 là kiểu int  
    System.out.println(a);  
  }
}  

Kết quả:

Compile time error

Chính vì thế, chúng ta cần phải ép kiểu

class OperatorExample{  
  public static void main(String args[]){  
    short a=10;  
    short b=10;  
    a=(short)(a+b);//20 đã được ép kiểu thành short  
    System.out.println(a);  
  }
}  

Kết quả:

20

Lời kết

Như vậy là bạn đã biết về các Toán tử trong Java cũng như Thứ tự ưu tiên của các toán tử trong Java.

Nếu có toán tử nào bạn chưa hiểu hay không rõ chúng được ưu tiên như thế nào thì hãy tự đặt ra các ví dụ và xem trình biên dịch trả lại kết quả gì nhé.

Chúc bạn Học Lập trình Java thật tốt.

Bài viết gần đây

Khối Khởi tạo thể hiện trong JAVA

Khối khởi tạo thể hiện được sử dụng để khởi tạo các biến thể hiện. Nó chạy mỗi lần khi đối tượng của lớp được tạo.

Ví dụ sử dụng từ khóa Super trong JAVA

Để hiểu cụ thể từ khóa super trong Java làm việc như thế nào, chúng ta cùng đi qua các ví dụ bên dưới đây:

Kiểu trả về Covariant trong Java

Kiểu trả về covariant đề cập đến kiểu trả về của phương thức ghi đè. Nó cho phép thu hẹp loại trả về của một phương thức được ghi đè mà không cần phải truyền loại hoặc kiểm tra loại trả về.

Method Overriding trong Java

Nếu subclass (lớp con) có các phương thức tương tự như trong các super class (class cha), nó được gọi là Method Overriding (Ghi đè phương thức) trong Java.

Method Overloading trong JAVA

Nếu một class có nhiều phương thức có cùng tên, nhưng đối số khác nhau, nó được gọi là Method Overloading. Có 2 cách thực hiện method Overloading trong Java

Mối quan hệ HAS-A (Aggregation) trong JAVA

Nếu một class có một thực thể tham chiếu, nó được gọi là Aggregation. Aggregation đại diện cho mối quan hệ HAS-A.

Leave a reply

Please enter your comment!
Please enter your name here