Daily Archives: 17/04/2017

Java 8 – Toán tử

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ử ++-- 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à &&||. Chúng thực hiện điều kiện ANDOR 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