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

0
3841
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 Tự học Lập trình Java thật tốt.