NỘI DUNG BÀI HỌC

✳️ Các phéo toán trong Java
✳️ Cách ép kiểu dữ liệu

✅ Toán tử trong Java

Toán tử trong java là một ký hiệu được sử dụng để thực hiện một phép tính/chức năng nào đó. Java cung cấp các dạng toán tử 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
[Selenium Java] Bài 1: Java basic | Anh Tester


Nội dung chính:
  • Toán tử số học
  • Toán tử Bit
  • Các toán tử quan hệ
  • Các toán tử logic
  • Các toán tử điều kiện
  • Toán tử gán
  • Thứ tụ ưu tiên của các toán tử
  • Thay đổi thứ tự ưu tiên của các toán tử


Toán tử số học

Các toán hạng của các toán tử số học phải ở dạng số. Các toán hạng kiểu boolean không sử dụng được, các toán hạng ký tự cho phép sử dụng loại toán tử này. Một vài kiểu toán tử được liệt kê trong bảng dưới đây.

Giả sử chúng ta có biến số nguyên a = 10 và b = 20.

Toán tử Mô tả Ví dụ
+ Cộng
Trả về giá trị là tổng của hai toán hạng
a + b sẽ là 30
- Trừ
Trả về kết quả là hiệu của hai toán hạng.
a - b sẽ là -10
* Nhân
Trả về giá trị là tích của hai toán hạng.
a * b sẽ là 200
/ Chia
Trả về giá trị là thương của phép chia.
b / a sẽ là 2
% Phép lấy modul
Giá trị trả về là phần dư của phép chia
b % a sẽ là 0
++ Tăng dần
Tăng giá trị của biến lên 1. Ví dụ a++ tương đương với a = a + 1
a++ sẽ là 11
-- Giảm dần
Giảm giá trị của biến 1 đơn vị. Ví dụ a-- tương đương với a = a - 1
a-- sẽ là 9
+= Cộng và gán giá trị
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. Ví dụ c += a tương đương c = c + a
a += 2 sẽ là 12
-= rừ và gán giá trị
Trừ các giá trị của toán hạng bên trái vào toán 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. Ví dụ c -= a tương đương với c = c - a
a -= 2 sẽ là 8
*= Nhân và gán
Nhân các giá trị của toán hạng bên trái với toán 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. Ví dụ c *= a tương đương với c = c*a
a *= 2 sẽ là 20
/= Chia và gán
Chia giá trị của toán hạng bên trái cho toán 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. Ví dụ c /= a tương đương với c = c/a
a /= 2 sẽ là 5
%= Lấy số dư và gán
Chia giá trị của toán hạng bên trái cho toán toán hạng bên phải và gán giá trị số dư vào toán hạng bên trái. Ví dụ c %= a tương đương với c = c%a
a %= 8 sẽ là 2


Toán tử Bit

Các toán tử dạng bit cho phép chúng ta thao tác trên từng bit riêng biệt trong các kiểu dữ liệu nguyên thuỷ.

Toán tử Mô tả
~ Phủ định NOT
Trả về giá trị phủ định của một bít.
& Toán tử AND
Trả về giá trị là 1 nếu các toán hạng là 1 và 0 trong các trường hợp khác
| Toán tử OR
Trả về giá trị là 1 nếu một trong các toán hạng là 1 và 0 trong các trường hợp khác.
^ Toán tử Exclusive OR
Trả về giá trị là 1 nếu chỉ một trong các toán hạng là 1 và trả về 0 trong các trường hợp khác.
>> Dịch phải
Chuyển toàn bộ các bít cuả một số sang phải một vị trí, giữ nguyên dấu của số âm. Toán hạng bên trái là số bị dịch còn số bên phải chỉ số vị trí mà các bít cần dịch.
<< Dịch trái
Chuyển toàn bộ các bít cuả một số sang trái một vị trí, giữ nguyên dấu cuả số âm. Toán hạng bên trái là số bị dịch còn số bên phải chỉ số vị trí mà các bít cần dịch.


Các toán tử quan hệ

Các toán tử quan hệ được sử dụng kiểm tra mối quan hệ giữa hai toán hạng. Kết quả của một biểu thức có dùng các toán tử quan hệ là những giá trị Boolean (logic “true” hoặc “false”). Các toán tử quan hệ được sử dụng trong các cấu trúc điều khiển.

Toán tử Mô tả
== So sánh bằng
Toán tử này kiểm tra sự tương đương của hai toán hạng
!= So sánh khác
Toán tử này kiểm tra sự khác nhau của hai toán hạng
> Lớn hơn
Kiểm tra giá trị của toán hạng bên phải lớn hơn toán hạng bên trái hay không
< Nhỏ hơn
Kiểm tra giá trị của toán hạng bên phải có nhỏ hơn toán hạng bên trái hay không
>= Lớn hơn hoặc bằng
Kiểm tra giá trị của toán hạng bên phải có lớn hơn hoặc bằng toán hạng bên trái hay không
<= Nhỏ hơn hoặc bằng
Kiểm tra giá trị của toán hạng bên phải có nhỏ hơn hoặc bằng toán hạng bên trái hay không

Các toán tử logic

Các toán tử logic làm việc với các toán hạng Boolean. Các toán tử quan hệ được sử dụng trong các cấu trúc điều khiển.

Toán tử Mô tả
&& Toán tử và (AND)
Trả về một giá trị “Đúng” (True) nếu chỉ khi cả hai toán tử có giá trị “True”
|| Toán tử hoặc (OR)
Trả về giá trị “True” nếu ít nhất một giá trị là True
^ Toán tử XOR
Trả về giá trị True nếu và chỉ nếu chỉ một trong các giá trị là True, các trường hợp còn lại cho giá trị False (sai)
! Toán tử phủ định (NOT)
Toán hạng đơn tử NOT. Chuyển giá trị từ True sang False và ngược lại.


Các toán tử điều kiện

Toán tử điều kiện là một loại toán tử đặc biệt vì nó bao gồm ba thành phần cấu thành biểu thức điều kiện. Cú pháp:

<biểu thức 1>   ?   <biểu thức 2>   :   <biểu thức 3>;​
  • biểu thức 1: Biểu thức logic. Trả trả về giá trị True hoặc False
  • biểu thức 2: Là giá trị trả về nếu <biểu thức="" 1="">xác định là True</biểu>
  • biểu thức 3: Là giá trị trả về nếu <biểu thức="" 1="">xác định là False</biểu>


Ví dụ:

public class Test {
    public static void main(String[] args) {
        int a = 20;
        int b = 3;
 
        String s = (a % b == 0) ? "a chia het cho b" : "a khong chia het cho b";
        System.out.println(s);
    }
}​

Kết quả:

a khong chia het cho b

Toán tử gán

Toán tử gán (=) dùng để 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.

Ví dụ:

int var = 20;
int p,q,r,s; 
p=q=r=s=var;

Trong ví dụ trên, đoạn lệnh sau gán một giá trị cho biến var và giá trị này lại được gán cho nhiều biến trên một dòng lệnh đơn.

Dòng lệnh cuối cùng được thực hiện từ phải qua trái. Đầu tiên giá trị ở biến var được gán cho ‘s’, sau đó giá trị của ‘s’ được gán cho ‘r’ và cứ tiếp như vậy.


Thứ tụ ưu tiên của các toán tử

Thứ tự ưu tiên quyết định trật tự thực hiện các toán tử trên các biểu thức. Bảng dưới đây liệt kê thứ tự thực hiện các toán tử trong Java

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 của các toán tử

Để 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.


Ví dụ:

public class TestThuTu {
    public static void main(String[] args) {
        int a = 20;
        int b = 5;
        int c = 10;
 
        System.out.println("a + b * c   = " + (a + b * c));
        System.out.println("(a + b) * c = " + ((a + b) * c));
        System.out.println("a / b - c   = " + (a / b - c));
        System.out.println("a / (b - c) = " + (a / (b - c)));
    }
}

Kết quả:

a + b * c   = 70
(a + b) * c = 250
a / b - c   = -6
a / (b - c) = -4

 

✅ Ép kiểu dữ liệu trong Java

Ép kiểu trong java là việc gán giá trị của một biến có kiểu dữ liệu này tới biến khác có kiểu dữ liệu khác.

float c = 35.8f;
int b = (int)c + 1;

Trong ví dụ trên, đầu tiên giá trị dấu phảy động c được đổi thành giá trị nguyên 35. Sau đó nó được cộng với 1 và kết quả là giá trị 36 được lưu vào b.

Phân loại ép kiểu trong java

Trong Java, có hai loại ép kiểu dữ liệu:

  1. Nới rộng (widening): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước nhỏ hơn sang kiểu có kích thước lớn hơn. Kiểu biến đổi này không làm mất thông tin.
  2. Thu hẹp (narrowwing): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn. Kiểu biến đổi này có thể làm mất thông tin


Nới rộng (widening)

ep-kieu-du-lieu-noi-rong

Nới rộng (widening): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước nhỏ hơn sang kiểu có kích thước lớn hơn. Kiểu biến đổi này không làm mất thông tin. Ví dụ chuyển từ int sang float. Chuyển kiểu loại này có thế được thực hiện ngầm định bởi trình biên dịch.

Ví dụ:

public static void main(String[] args) {
    int i = 100;
    long l = i; // không yêu cầu chỉ định ép kiểu
    float f = l; // không yêu cầu chỉ định ép kiểu
    System.out.println("Giá trị Int: " + i);
    System.out.println("Giá trị Long: " + l);
    System.out.println("Giá trị Float:  " + f);
}

 

Kết quả:

Giá trị Int: 100 
Giá trị Long: 100 
Giá trị Float: 100.0

 

Thu hẹp (narrowwing)

ep-kieu-du-lieu-thu-hep

Thu hẹp (narrowwing): Là quá trình làm tròn số từ kiểu dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn. Kiểu biến đổi này có thể làm mất thông tin như ví dụ ở trên. Chuyển kiểu loại này không thể thực hiện ngầm định bởi trình biên dịch, người dùng phải thực hiện chuyển kiểu tường minh.

Ví dụ:

public static void main(String[] args) {
    double d = 100.04;
    long l = (long) d; // yêu cầu chỉ định kiểu dữ liệu (long)
    int i = (int) l; // yêu cầu chỉ định kiểu dữ liệu (int)

    System.out.println("Giá trị Double: " + d);
    System.out.println("Giá trị Long: " + l);
    System.out.println("Giá trị Int:  " + i);

}

 

Kết quả:

Giá trị Double: 100.04 
Giá trị Long: 100 
Giá trị Int: 100

 

Teacher

Teacher

Anh Tester

Software Quality Engineer

Đường dẫu khó chân vẫn cần bước đi
Đời dẫu khổ tâm vẫn cần nghĩ thấu

Cộng đồng Automation Testing Việt Nam:

🌱 Telegram Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 
Facebook Fanpage: Cộng đồng Automation Testing Việt Nam - Selenium
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

Chia sẻ khóa học lên trang

Bạn có thể đăng khóa học của chính bạn lên trang Anh Tester để kiếm tiền

Danh sách bài học