Java cung cấp các loại toán tử khác nhau như sau:
Toán tử số học
Các toán tử số học được dùng trong các biểu thức toán 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 tốn hạng kiểu boolean khơng sử dụng được, song các toán hạng ký tự cho phép sử dụng với loại toán tử này.
Toán tử quan hệ
Các toán tử quan hệ 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 tốn tử quan hệ là những giá trị boolean, true (đúng) hoặc
false (sai).
Toán tử logic
Các toán tử logic làm việc với các toán hạng boolean.
Toán tử gán
Toán tử gán là một dấu bằng, =, dùng để gán giá trị cho một biến. Có thể gán giá trị cho một hoặc nhiều biến kế tiếp nhau. Nghĩa là, có thể sử dụng một dãy các phép gán.
Toán tử thao tác bit (bitwise)
Một toán tử bitwise cho phép 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ử bitwise dựa trên cơ sở đại số boolean. Nó thực hiện
phép tính trên hai bit có vị trí tương ứng trên hai tốn hạng để tạo ra một kết quả mới.
Khi các toán hạng là các số, toán tử „&‟ thực thi hàm AND giữa hai bit, và toán tử „|‟ thực thi hàm OR giữa hai bit. Bảng 2.3 mô tả vấn đề này.
Condition1
(Điều kiện 1) (Điều kiện 2) Condition2 Condition1 & Condition2
Condition1 | Condition2
True True True True
True False False True
False False False False
False False False False
Bảng 2.3: AND và OR
Tốn tử dịch bit sang phải khơng dấu
Mỗi lần một dịch bit xảy ra, toán tử >>> tự động điền bit có thứ tự ưu tiên cao với nội dung trước đó của nó nhưng vẫn giữ dấu của giá trị. Tuy nhiên, thỉnh thoảng dịch chuyển này khơng thích hợp với những giá trị khơng phải là số. Trường hợp này thường xảy ra khi làm việc với dữ liệu là đồ họa và các giá trị dựa trên pixel. Trong tình huống đó, một giá trị 0 được dịch chuyển đến bit có thứ tự ưu tiên cao khơng quan tâm tới giá trị ban đầu của nó. Điều này gọi là dịch chuyển bit không dấu. Vì vậy, một tốn tử dịch bit sang phải không dấu, >>>, luôn luôn dịch chuyển 0 đến các bit có thứ tự ưu tiên cao hơn.
Đoạn mã 7:
int val = -3; val = val >>> 20;
Trong đó, val được gán bằng -3. Giá trị này sau đó được dịch chuyển sang phải 20 bits, điền 0 vào 20 bits đó và lờ đi bit dấu. Giá trị sau khi dịch bit là 4095.
Chương 2 Biến và toán tử
27/114 Toán tử này chỉ được dùng cho các biến tham chiếu đối tượng để kiểm tra một đối tượng có thuộc một kiểu xác định hay không. Dạng tổng quát của toán tử instanceof là:
object instanceof type
Ở đây, đối tượng là thể hiện của một lớp, và có kiểu là kiểu của lớp. Nếu đối tượng thuộc về một kiểu xác định hoặc có thể ép kiểu thành kiểu xác định, thì tốn tử instanceof trả lại giá trị true, ngược lại thì false.
Đoạn mã 8 minh hoạ cách dùng toán tử này.
Đoạn mã 8:
Scanner input = new Scanner(System.in); Boolean val = input instanceof Scanner; System.out.println(val);
Giá trị được in ra trong đoạn mã trên là true
Toán điều kiện
Toán tử điều kiện là một loại tốn tử đặc biệt vì nó gồm ba thành phần cấu thành biểu thức điều kiện. Tốn tử này có thể thay thế câu lệnh if-then-else.
Cú pháp :
expression1 ? expression2 : expression3;
Trong đó,
expression1: là biểu thức logic bất kỳ trả về giá trị true hoặc false.
expression2: là biểu thức sẽ được ước lượng khi giá trị của expression 1 là true. expression3: là biểu thức sẽ được ước lượng khi giá trị của expression 1 là false
Các tốn tử điều kiện có thể lồng nhau và được minh họa trong đoạn mã 9:
Đoạn mã 9:
int num2 = 10; char op = '*';
System.out.println( (op == '-') ? (num1 - num2) : (op == '+') ? (num1 + num2) : (op == '*') ? (num1 * num2) : "Invalid operator");
Trong đoạn mã 9, điều kiện cuối cùng là true nên kết quả là 50.