Toán tử đánh giá toán hạng trong java năm 2024

Toán tử đánh giá toán hạng trong java năm 2024

Đã đăng vào thg 8 10, 2022 8:45 SA 1 phút đọc

  • Nhằm giúp các bạn dễ hiểu và không bị rối thì ở bài viết này mình sẽ chỉ giới thiệu cho các bạn một số toán tử thường dùng và phổ biến.

1. Toán tử số học

  • Các toán tử số học được sử dụng trong các biểu thức toán học theo cách tương tự như chúng được sử dụng trong đại số học. Toán tử Tên Mô tả + Cộng Là tổng của hai toán hạng - Trừ Là hiệu của hai toán hạng. * Nhân Là tích của hai toán hạng. / Chia Là thương của phép chia. % Phép chia lấy dư Giá trị trả về là phần dư của phép chia Tăng dần Tăng giá trị của biến lên 1. `a <=> a = a + 1`-- Giảm dần Giảm giá trị của biến 1 đơn vị. a-- <=> a = a - 1+= 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. c+=a <=> c = c + a-= Trừ 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. c-=a <=> c = c - a*= 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. c*=a <=> c = c*a/= 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. c/=a <=> c = c/a%= 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. c%=a <=> c = c%a

2. 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. Toán tử Tên 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

3. Toán tử logic trong Java

  • 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ử Tên 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ử 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.

4. 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. Thứ 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ư =,*=,/=,+=,-=

5. 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 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.

All rights reserved

Một chương trình thực tế bao hàm việc tạo ra các biến. Các toán tử kết hợp các giá trị đơn giản hoặc các biểu thức con thành những biểu thức mới, phức tạp hơn và có thể trả về các giá trị. Điều này có hàm ý tạo ra các toán tử luận lý, số học, quan hệ và so sánh trên các biểu thức.

Toán tử trong java là 1 ký hiệu được dùng để thực hiện 1 phép tính/chức năng nào đấy. Techacademy sẽ giới thiệu đến bạn các toán tử cơ bản (Basic Operators) trong Java

Danh Mục Bài Viết

1. Từ khóa new trong Java là gì?

Đầu tiên, phải khẳng định luôn “new” trong Java là 1 … từ khóa (keyword). Vâng, chính vì vậy, chúng ta không được đặt tên hàm, phương thức, biến hay bất cứ thứ gì trùng với từ khóa new. Từ khóa new được dùng để cấp phát bộ nhớ cho đối tượng.

Nói rõ hơn đó là:

Lúc ta định nghĩa ra 1 đối tượng, chúng ta chỉ mới tạo ra nó trong “kế hoạch”, trong “tưởng tượng”. Đối tượng chưa thực sự tồn tại vì chưa được cấp phát vùng nhớ trên máy tính.

Tiếp đó, chúng ta dùng new để chính thức cấp phát vùng nhớ cho đối tượng. Đến lúc này thì đối tượng mới thực sự tồn tại trong chương trình của chúng ta.

Lưu ý: Trong Java có 1 số lớp đặc trưng không cần dùng từ khóa “new” để tạo đối tượng cho nó, do đó cách dùng của nó khá giống với 1 kiểu dữ liệu, điển hình trong trường hợp này là String.

2. Những cách dùng từ khóa new trong Java?

Từ khóa new được dùng chủ yếu trong việc tạo ra đối tượng, giúp ta có thể thao tác với đối tượng đó.

Cú pháp đơn giản của nó:

ViDuNew obj = new ViDuNew(); Nó thường được dùng bằng 1 số cách sau đây:

Cách 1: Các dùng từ khóa new để tạo đối tượng đơn giản

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

Như các bạn thấy, sau khi tạo 1 class và định nghĩa phương thức hienThiThongTin() thì chúng ta chưa truy cập được phương thức đó ngay.

Mà phải tạo 1 đối tượng (thể hiện) của class đó thì mới truy cập được:

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); Sau đó, các bạn có thể dùng đối tượng (thể hiện) vừa tạo để truy cập các phương thức, biến đối tượng của nó.

obj.hienThiThongTin(); Kết quả nhận được là:

Gọi đến phương thức hienThiThongTin Cách 2: dùng từ khóa new và tham chiếu đến constructor tương ứng.

Như các bạn đã biết, khi tạo đối tượng, chương trình sẽ tự động gọi đến constructor tương ứng (nếu có định nghĩa rõ ràng constructor) hoặc nếu không có thì tự tạo và gọi đến constructor mặc định.

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

Khi chạy chương trình, chúng ta nhận được kết quả là:

Gọi đến constructor tương ứng Cách 3: Gọi từ khóa new để khởi tạo đối tượng mới có đối số.

Ví dụ, ở đây mình định nghĩa 1 class là Student và thực hiện get / set cho class này.

class Student {

private String MSSV;  
private String ten;
// Hàm (constructor) khởi tạo đối tượng  
public Student(String MSSV, String ten) {  
    this.MSSV = MSSV;  
    this.ten = ten;  
}
// Các hàm get, set thuộc tính của đối tượng  
public String LayMSSV() {  
    return this.MSSV;  
}
public String LayTen() {  
    return this.ten;  
}
public void DatMSSV(String MSSV) {  
    this.MSSV = MSSV;  
}
public void DatTen(String ten) {  
    this.ten = ten;  
}  
}

Tiếp đó mình tạo 1 class Main (trong cùng file Main.java) để thực hiện 1 số hành động dùng class Student.

class Main {

public static void main(String[] args) {  
    // Khai báo 1 đối tượng Student và khởi tạo nó luôn, cùng 1 dòng lệnh  
    Student student = new Student("B1714757", "Tran Thanh Tam");  
    // Thao tác với đối tượng vừa được khởi tạo  
    System.out.println("Trước khi chỉnh sửa:");  
    System.out.println("Mã số sinh viên: " + student.LayMSSV());  
    System.out.println("Tên sinh viên: " + student.LayTen());
    student.DatMSSV("B1704948");  
    student.DatTen("Nguyen Viet Tu");
    System.out.println("Sau khi chỉnh sửa:");  
    System.out.println("Mã số sinh viên: " + student.LayMSSV());  
    System.out.println("Tên sinh viên: " + student.LayTen());  
}  
}

Khi định nghĩa xong class Student thì bạn chưa dùng được chúng, chưa gọi đến được các phương thức của nó.

Bởi vì bạn mới chỉ lập 1 bản kế hoạch thôi.

Sau khi dùng từ khóa new, ví dụ như thế này:

Student student = new Student("B1714757", "Tran Thanh Tam"); Thì 1 sinh viên thực thụ mới được tạo ra (được cấp phát bộ nhớ)

Ở đây, mình truyền đối số trong khi new đối tượng để tận dụng constructor tạo ra các thông tin ban đầu của sinh viên luôn.

Kết quả có được như thế này:

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

0

Nếu bạn không tạo đối tượng, thì bạn không thể truy cập, chỉnh sửa như thế này được đâu:

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

1

Cách 4: dùng từ khóa new để tạo mảng

Đúng vậy, bạn có thể tạo 1 mảng bằng cách dùng từ khóa new:

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

2

Lưu ý, ta dùng từ khóa

Gọi đến constructor tương ứng 1 khi tạo mảng đối tượng để truy cập mà không cần tạo đối tượng mới.

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

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

3

Hoặc nếu bạn tạo đối tượng mảng mới trong phương thưc main thì không cần static, ví dụ:

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

4

Khi chạy chương trình, chúng ta cũng nhận được kết quả tương tự:

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

3

II. Toán Tử Bit Trong Java

Các toán tử dạng bit cho phép mọi người 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ử Bit có thể áp dụng cho kiểu số nguyên integer, long, short, char, byte.

Giả sử A = 60, B = 13

Chuyển qua dạng nhị phân

A = 0011 1100

B = 0000 1101

Toán tử Mô tả Ví dụ & Bitwise and A & B = 0000 1100 | Bitwise or A || B = 0011 1101 Bitwise xor A B = 0011 0001 ~ Bitwise đảo bit ~A = 1100 0011 << Left shift A << 2 = 1111 0000 >> Right shift A >> 2 = 1111 >>> Righ shift fill zero A >> 2 = 0000 1111

dùng hàm Integer.toBinaryString() để chuyển 1 số nguyên sang số dạng bit.

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

6

III. Toán Tử Instanceof Trong Java

Toán tử instanceof trong Java là 1 toán tử được dùng để kiểm tra xem đối tượng này có phải là instance của 1 class hay interface nào đấy hay không? Kết quả trả về của toán tử này sẽ là true nếu đối tượng đấy là thể hiện của class mà bạn đang check, ngược lại thì false.

Ví dụ, mình có 1 class Application dưới đây:

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

7

Trong hàm main() của class này, mình initialize 1 đối tượng của class Application và dùng toán tử instanceof để kiểm tra xem đối tượng này có phải là instance của class Application này hay không? bạn sẽ thấy kết quả sẽ dưới đây:

Toán tử đánh giá toán hạng trong java năm 2024

Nếu bạn viết code dưới đây:

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

8

thì IDE sẽ báo lỗi ngay:

Toán tử đánh giá toán hạng trong java năm 2024

Đây là trong trường hợp quá tường minh, quá rõ ràng, IDE có thể báo lỗi cho bạn biết ngay.

Nhưng nếu bạn có 1 interface với 2 implementation dưới đây:

public class ViDuTuKhoaNew1 {

void hienThiThongTin()  
{  
    System.out.println("Gọi phương thức hienThiThongTin");    
}  
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1();  
    // Truy cập phương thức của đối tượng  
    obj.hienThiThongTin();  
}    
}

9

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); 0

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); 1

thì lúc này nếu bạn initialize đối tượng của class Triangle nhưng lại đi kiểm tra đối tượng này có phải là thể hiện của class Rectangle,

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); 2

IDE sẽ không thể detect lỗi lúc compile time nhưng khi chạy bạn sẽ thấy kết quả dưới đây:

Toán tử đánh giá toán hạng trong java năm 2024

Chúng ta sẽ thường dùng toán tử instanceof trong trường hợp kiểm tra xem tham số truyền vào của 1 phương thức có phải là instance của 1 class nào đấy hay không? Ví dụ như:

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); 3

Trong phương thức trên, tham số interface Shape có nhiều implementation khác nhau, trong phần body của phương thức, chúng ta sẽ check xem là instance được truyền vào phương thức này có phải là Triangle hay không? Nếu đúng thì xử lý code tiếp. Kết quả:

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); 4

Toán tử đánh giá toán hạng trong java năm 2024

Từ Java 14, bạn có thể viết lại phương thức check() dùng pattern matching instanceof, đơn giản dưới đây:

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); 5

Với cách viết mới, chúng ta không cần viết thêm 1 dòng code để cast instance về đối tượng mà chúng ta muốn nữa. Tất cả sẽ được thực hiện trong dòng lệnh if.

Kết quả vẫn như vậy:

Toán tử đánh giá toán hạng trong java năm 2024

IV. Toán Tử Gán Trong Java

Chương trình ví dụ đơn giản như sau minh họa những toán tử gán trong Java. Copy và paste chương trình Java này trong Test.java file và sau đó biên dịch và thực thi chương trình này:

TOÁN TỬ MIÊU TẢ VÍ DỤ: B = 20, A = 10 = Toán tử gán đơn giản. Gán giá trị toán hạng bên phải cho toán hạng trái. C = A + B sẽ gán giá trị của A + B vào cho C += Thêm giá trị toán hạng phải tới toán hạng trái và gán giá trị đó cho toán hạng trái. C += A là tương đương với C = C + A -= Trừ đi giá trị toán hạng phải từ toán hạng trái và gán giá trị này cho toán hạng trái. C -= A là tương đương với C = C – A *= Nhân giá trị toán hạng phải với toán hạng trái và gán giá trị này cho toán hạng trái. C *= A là tương đương với C = C * A /= Chia toán hạng trái cho toán hạng phải và gán giá trị này cho toán hạng trái. C /= A là tương đương với C = C / A %= Lấy phần dư của phép chia toán hạng trái cho toán hạng phải và gán cho toán hạng trái. C %= A là tương đương với C = C % A <<= Dịch trái toán hạng trái sang số vị trí là giá trị toán hạng phải. C <<= 2 là giống như C = C << 2 >>= Dịch phải toán hạng trái sang số vị trí là giá trị toán hạng phải. C >>= 2 là giống như C = C >> 2 &= Phép AND bit C &= 2 là giống như C = C & 2 = Phép OR loại trừ bit C = 2 là giống như C = C ^ 2 |= Phép OR bit. C |= 2 là giống như C = C | 2

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); 6

Nó sẽ cho kết quả như sau:

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); 7

Các bạn không được dùng toán tử gán này để gán giá trị boolean cho 1 biến có kiểu dữ liệu là char, byte, short, int, long hay float, hay double và ngược lại. Nếu cố gắng làm điều đó thì sẽ bị lỗi compile ngay.

Toán tử đánh giá toán hạng trong java năm 2024

Bạn không thể gán 1 biến mà kiểu dữ liệu của nó có khoảng giá trị lớn hơn sang 1 biến có kiểu giá trị có khoảng giá trị nhỏ hơn.

Ví dụ, chúng ta không thể gán 1 biến có kiểu long sang biến có kiểu int như sau:

Toán tử đánh giá toán hạng trong java năm 2024

đó là bởi vì khoảng giá trị của kiểu long lớn hơn int rất nhiều.

– Các toán tử còn lại bao gồm “+=“, “-=“, “*=“, “/=” là dạng viết tắt của của phép tính cộng trừ nhân chia với toán tử gán.

“+=”: đầu tiên là cộng sau đó là gán.

“-=”: đầu tiên là trừ sau đó là gán.

“*=”: đầu tiên là nhân sau đó là gán.

“/=”: đầu tiền là chia sau đó là gán.

Ví dụ chúng ta có phép tính như sau:

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); 8

có nghĩa là

ViDuTuKhoaNew1 obj = new ViDuTuKhoaNew1(); 9

Hay

obj.hienThiThongTin(); 0

có nghĩa là

obj.hienThiThongTin(); 1

Tương tự vậy cho phép chia và phép nhân.

V. Toán Tử Chia Hết Trong Java

Cùng Techacademy viết chương trình nhập vào 1 mảng các số nguyên bất kỳ và sau đó hiển thị các phần tử chia hết cho 5 trong mảng đó.

Để kiểm tra 1 phần tử trong mảng có chia hết cho 5 hay không thì các bạn sẽ dùng vòng lặp for để duyệt các phần tử trong mảng và thực hiện toán tử chia lấy dư phần tử đó cho 5. Nếu kết quả của toán tử đó = 0 thì sẽ hiển thị phần tử đó ra, ngược lại thì quay lại vòng lặp for và thực hiện lại các lệnh trong thân vòng lặp.

obj.hienThiThongTin(); 2

Kết quả sau khi biên dịch chương trình:

Toán tử đánh giá toán hạng trong java năm 2024

VI. Toán Tử Chia Lấy Dư Trong Java

Cùng Techacademy tham khảo các ví dụ về toán tử chia lấy dư trong Java nhé

Cho 2 biến kiểu số nguyên

Gọi đến constructor tương ứng 2 và

Gọi đến constructor tương ứng 3 được nhập từ bàn phím, các bạn hãy viết chương trình hiển thị ra màn hình:

obj.hienThiThongTin(); 3

Với {P} là phần dư của phép chia a/b.

Ví dụ nếu các bạn nhập

obj.hienThiThongTin(); 4

thì màn hình sẽ hiển thị lên dòng chữ:

obj.hienThiThongTin(); 5

Giải thích: 7 chia 3 dư 1

Lý thuyết:

Để lấy phần dư của 1 phép chia các bạn có thể sử dụng toán tử %. Ví dụ chương trình:

obj.hienThiThongTin(); 6

Kết quả khi chạy chương trình:

obj.hienThiThongTin(); 7

Do 2 là phần dư của phép chia 5/3.

Đọc tới đây bạn đã biết cách lấy ra phần dư của phép chia, hãy quay lại phần bài tập và làm thử.

Hướng dẫn:

Code mẫu sử dụng toán tử %:

obj.hienThiThongTin(); 8

Code mẫu không sử dụng toán tử %:

obj.hienThiThongTin(); 9

VII. Toán Tử Điều Kiện Trong Java

Bài tập:

Toán tử này gồm 3 toán hạng và được dùng để ước lượng những biểu thức quan hệ. Mục tiêu của toán tử chính là quyết định giá trị nào sẽ được gán cho biến.

Toán tử này được viết như sau:

Gọi đến phương thức hienThiThongTin 0

  • 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 xác định là True biểu thức 3: Là giá trị trả về nếu xác định là False

Tất nhiên, bạn không cần thiết phải dùng các dấu ngoặc đơn như trên. Mình viết như vậy để giúp các bạn dễ nhìn hơn. Sau đây chính là ví dụ minh họa toán tử điều kiện (? 🙂 trong Java:

Gọi đến phương thức hienThiThongTin 1

Nó sẽ cho kết quả sau:

Gọi đến phương thức hienThiThongTin 2

Ví dụ 2:

Gọi đến phương thức hienThiThongTin 3

Kết quả là:

Gọi đến phương thức hienThiThongTin 4

Gọi đến phương thức hienThiThongTin 5

VIII. Toán Tử Mũ Trong Java

Math.pow(x,y) là phương thức dùng để tính lũy thừa xy (x là cơ số và y là số mũ).

Ví dụ cụ thể như sau:

Gọi đến phương thức hienThiThongTin 6

Kết quả sau khi biên dịch chương trình sẽ nhận được:

Toán tử đánh giá toán hạng trong java năm 2024

IX. Toán Tử 2 Ngôi Trong Java

Toán tử &, |, ^ – Đây là các toán tử 2 ngôi với 2 số hạng là 2 dãy bit

&: đọc là AND, kết quả của biểu thức là 1 nếu cả 2 bit số hạng là 1, ngược lại kết quả là 0.

| : đọc là OR, kết quả của biểu thức là 1 nếu một trong 2 bit số hạng là 1, ngược lại kết quả là 0.

^: đọc là XOR, kết quả của biểu thức là 1 nếu 2 bit số hạng khác nhau, ngược lại kết quả là 0.

Ví dụ có p và q là 2 bit cần đưa vào tính toán:

p q p & q p | q p ^ q 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0

X. Toán Tử 3 Ngôi Trong Java

Toán tử điều kiện là 1 loại toán tử đặc biệt vì nó gồm 3 thành phần cấu thành biểu thức điều kiện, hay nói cách khác toán tử điều kiện là toán tử 3 ngôi.

Toán tử đánh giá toán hạng trong java năm 2024

Cú pháp:

Gọi đến phương thức hienThiThongTin 7

Trong đó:

Biểu thức logic: là 1 biểu thức logic, nó trả trả về giá trị true hoặc false. Câu lệnh khi biểu thức trả về true: Giá trị trả về nếu Biểu thức logic nhận giá true. Câu lệnh khi biếu thức trả về false: Giá trị trả về nếu Biểu thức logic nhận giá false.

Ví dụ 1:

Gọi đến phương thức hienThiThongTin 8

Chú ý: Kiểu giá trị của Câu lệnh khi biểu thức trả về true và Câu lệnh khi biếu thức trả về false phải tương thích với nhau.

Ví dụ 2: Đoạn biểu thức điều kiện sau trả về giá trị “a là số chẵn” nếu như giá trị của biến a là số chẵn, ngược lại trả về giá trị “a là số lẻ” nếu như giá trị của biến a là số lẻ.

Gọi đến phương thức hienThiThongTin 9

Ví dụ 3: Nếu như trước đây khi phải dùng với if – else chúng ta sẽ có như thế này:

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

0

Thì bây giờ chỉ còn:

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

1

Nếu như trước đây ta sẽ có :

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

2

Thì bây giờ chỉ còn:

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

3

XI. Toán Tử Quan Hệ Trong Java

Các toán tử quan hệ được dùng kiểm tra mối quan hệ giữa hai toán hạng. Kết quả của 1 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 dùng trong các cấu trúc điều khiển.

TOÁN TỬ MIÊU TẢ VÍ DỤ: B = 20, A = 10 == Kiểm tra nếu giá trị của 2 toán hạng có cân bằng hay không, nếu có thì điều kiện là true. (A == B) là không true. != Kiểm tra nếu giá trị 2 toán hạng là cân bằng hay không, nếu không cân bằng, thì điều kiện là true (A != B) là true. > Kiểm tra nếu toán hạng trái có lớn hơn toán hạng phải hay không, nếu có thì điều kiện là true (A > B) là không true. < Kiểm tra nếu toán hạng phải có lớn hơn toán hạng trái hay không, nếu có thì điều kiện là true (A < B) là true. >= Kiểm tra nếu toán hạng trái có lớn hơn hoặc bằng toán hạng phải hay không, nếu có thì điều kiện là true (A >= B) là không true. <= Kiểm tra nếu toán hạng phải có lớn hơn hoặc bằng toán hạng trái hay không, nếu có thì điều kiện là true (A <= B) là true.

Lưu ý: Toán tử == và != được dùng trong các trường hợp sau:

So sánh hai kiểu nguyên thủy số hoặc ký tự. Nếu các giá trị số thuộc các kiểu dữ liệu khác nhau, các giá trị sẽ tự động được thăng hạng. Ví dụ: 5 == 5,00 trả về true vì phía bên trái được thăng cấp thành double. So sánh hai giá trị boolean. So sánh hai đối tượng, bao gồm giá trị null và chuỗi.

Ví dụ:

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

4

Output:

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

5

Trong chương trình trên cả a và b là các số có dấu phẩy động, dạng dữ liệu có khác nhau, a là kiểu float còn b là kiểu double. Tuy vậy chúng không phải là cùng 1 kiểu. Bởi vậy khi kiểm tra giá trị của các toán hạng, kiểu dữ liệu cần phải được kiểm tra.

XII. Toán Tử So Sánh Trong Java

Thực hiện so sánh đối tượng với toán tử == và nạp chồng phương thức equals để so sánh ư đối tượng giống nhau về dữ liệu. Cần phải nhớ rằng khi bạn tạo ra các đối tượng, biến lưu đối tượng là 1 tham chiếu tới đối tượng. Do đó khi dùng toán tử so sánh bằng ==, nó sẽ dùng tham chiếu để so sánh chứ không dùng giá trị đối tượng so sánh.

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

6

Bạn thấy a1, a2 có dữ liệu name giống nhau nhưng so sánh là khác nhau vì nó dùng tham khảo a1 là 1 đối tượng khác với a2 (a1,a2 ở hai vị trí bộ nhớ khác nhau).

a1, a3 đều trỏ đến 1 địa chỉ bộ nhớ lên nó bằng nhau.

equals() Mỗi đối tượng đều có 1 phương thức định nghĩa sẵn equals() được dùng để so sánh về dữ liệu. Để dùng nó với lớp, bạn cần nạp chồng và thi hành kiểm tra điều kiện bằng nhau hay không.

Cách đơn giản với Eclipse là nhấn phải chuột cửa sổ soạn thảo lớp, chọn Source > Generate hashCode() and equals()…, sẽ tự sinh ra cho bạn

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

7

Ví dụ trên đã thực sự so sánh dữ liệu đối tượng

XIII. Toán Tử Xor Và Or Trong Java

Toán Tử Xor

Phép toán thao tác bit XOR lấy hai dãy bit có cùng độ dài và thực hiện phép toán logic bao hàm XOR trên mỗi cặp bit tương ứng. Kết quả ở mỗi vị trí là 1 chỉ khi bit đầu tiên là 1 hoặc nếu chỉ khi bit thứ hai là 1, nhưng sẽ là 0 nếu cả hai là 0 hoặc cả hai là 1. Ở đây ta thực hiện phép so sánh hai bit, kết quả là 1 nếu hai bit khác nhau và là 0 nếu hai bit giống nhau. Ví dụ:

0101 (số thập phân 5)

XOR 0011 (số thập phân 3)

0110 (số thập phân 6)

(cách nhớ dễ nhất là: 2 bit giống nhau trả về 0, 2 bit khác nhau trả về 1)

Bảng chân trị cho XOR:

Toán tử đánh giá toán hạng trong java năm 2024

Phép toán thao tác bit XOR có thể được dùng để đảo ngược các bit được lựa chọn trong thanh ghi (còn được gọi là bật (set) hoặc lật (flip)). Bất kỳ bit nào được bật bằng cách thực hiện phép toán thao tác bit XOR nó với 1. Ví dụ: cho dãy bit 0010 (số 2 thập phân), bit thứ hai và thứ tư có thể được kích hoạt bằng cách dùng phép toán thao tác bit XOR với 1 dãy bit có chứa 1 ở vị trí thứ hai và thứ tư:

0010 (số thập phân 2) XOR 1010 (số thập phân 10) = 1000 (số thập phân 8)

Kỹ thuật này có thể được dùng để điều khiển dãy bit biểu hiện các bộ chứa phép toán logic đúng sai (boolean).

Trong C, C++, Java, C#, toán tử thao tác bit XOR được biểu diễn bằng ký hiệu “^” (dấu mũ). Trong Pascal, toán tử này là “xor”. Ví dụ:

x = y ^ z; // C

Hay:

x:= y xor z;

Câu lệnh trên sẽ gáp trình thienmaonline.vnên hợp ngữ (Assembly) thường dùng toán tử XOR để gán giá trị của 1 thanh ghi (register) về 0. Khi thực hiện phép toán XOR cho 1 mẫu bit với chính bản thân nó, mẫu nhị phân nhận được sẽ toàn bit 0. Trên nhiều kiến trúc máy tính, dùng XOR để gán 0 cho 1 thanh ghi sẽ được CPU xử lý nhanh hơn so với chuỗi thao tác tương ứng để nạp và lưu giá trị 0 vào thanh ghi.

Toán Tử Or

Phép toán trên thao tác bit OR lấy hai dãy bit có độ dài bằng nhau và thực hiện phép toán lý luận bao hàm OR trên mỗi cặp bit tương ứng. Kết quả ở mỗi vị trí sẽ là 0 nếu cả hai bit là 0, ngược lại thì kết quả là 1. Ví dụ:

0101 (số thập phân 5)

OR 0011 (số thập phân 3)

\= 0111 (số thập phân 7)

Bảng chân trị cho OR:

Toán tử đánh giá toán hạng trong java năm 2024

Phép toán thao tác bit XOR có thể được dùng để đảo ngược các bit được lựa chọn trong thanh ghi (còn được gọi là bật (set) hoặc lật (flip)). Bất kỳ bit nào được bật bằng cách thực hiện phép toán thao tác bit XOR nó với 1. Ví dụ: cho dãy bit 0010 (số 2 thập phân), bit thứ 2 và thứ tư có thể được kích hoạt bằng cách dùng phép toán thao tác bit XOR với 1 dãy bit có chứa 1 ở vị trí thứ hai và thứ tư:

0010 (số thập phân 2)

XOR 1010 (số thập phân 10)

\= 1000 (số thập phân 8)

Kỹ thuật này có thể được dùng để điều khiển dãy bit biểu hiện các bộ chứa phép toán logic đúng sai (boolean).

Trong C, C++, Java, C#, toán tử thao tác bit XOR được biểu diễn bằng ký hiệu “^” (dấu mũ). Trong Pascal, toán tử này là “xor”. Ví dụ:

x = y ^ z; // C

Hay:

x:= y xor z; { Pascal }

Câu lệnh trên sẽ gáp trình viên hợp ngữ (Assembly) thường dùng toán tử XOR để gán giá trị của 1 thanh ghi (register) về 0. Khi thực hiện phép toán XOR cho 1 mẫu bit với chính bản thân nó, mẫu nhị phân nhận được sẽ toàn bit 0. Trên nhiều kiến trúc máy tính, dùng XOR để gán 0 cho 1 thanh ghi sẽ được CPU xử lý nhanh hơn so với chuỗi thao tác tương ứng để nạp và lưu giá trị 0 vào thanh ghi.

XIV. Toán Tử Logic Trong Java

Toán tử logic được sử dụng để kiểm tra tính đúng đắn của một hoặc nhiều biểu thức. Giá trị trả về của các biểu thức này là 1 giá trị kiểu boolean, true hoặc false. Trong Java, ta có các toán tử logic như sau:

AND (&&)

OR (||)

NOT (!)

Toán tử AND

Toán tử AND được sử dụng trong trường hợp chúng ta có hai hay nhiều biểu thức và chúng ta cần tất cả các biểu thức đó đều đúng, có nghĩa là kết quả trả về của chúng đều là true.

Ví dụ:

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

8

Ở đây ta có hai biểu thức là c > a và c > b và toán tử AND được sử dụng để chắc chắn rằng giá trị của c đều lớn hơn hai giá trị của hai biến còn lại là a và b.

Toán tử OR

Toán tử OR cũng được sử dụng trong trường hợp chúng ta có hai hay nhiều biểu thức và chúng ta chỉ cần 1 trong các biểu thức đó là đúng, nghĩa là giá trị của nó là true. Các biểu thức còn lại true hay false đều được nhưng ít nhất phải có 1 cái là true.

Ví dụ:

public class ViDuTuKhoaNew2 {

ViDuTuKhoaNew2() {  
    System.out.println("Gọi đến constructor tương ứng");  
}
public static void main(String[] args) {  
    // Tạo đối tượng mới  
    ViDuTuKhoaNew2 obj = new ViDuTuKhoaNew2();  
}  
}

9

Trong ví dụ này, ta chỉ cần c lớn a là được rồi, b có lớn hơn c hay không cũng ko sao. 😀

Toán tử NOT

Toán tử NOT dùng để đảo ngược kết quả của một hay nhiều biểu thức trả về giá trị boolean. Có nghĩa nếu 1 biểu thức bất kỳ trả về giá trị true, sử dụng toán tử NOT thì kết quả cuối cùng sẽ là ngược lại với true, là false.

Ví dụ:

Gọi đến constructor tương ứng 0

Kết quả của ví dụ này là true bởi vì a không lớn hơn b, false, đảo ngược lại sẽ là true.

Để bạn hiểu rõ hơn về kết quả của các biểu thức sử dụng với toán tử logic, mình đưa ra bảng dưới đây, ta thường gọi nó là bảng chân trị:

Toán tử AND (&&) Toán tử OR (||) Toán tử NOT (!) true && true => true true || true => true !true => false true && false => false true || false => true !false => true false && true => false false || true => true false && false => false false || false => false true && true && false => false false || false || true => true

Nhìn vào bảng trên ta có thể thấy

Toán tử AND chỉ có thể trả về true nếu tất cả các kết quả của biểu thức đều là true, nếu một trong số chúng là false thì kết quả sẽ là false.

Toán tử OR chỉ trả về false nếu tất cả các kết quả của biểu thức là false, ngược lại, chỉ cần một biểu thức là true thì kết quả sẽ là true.

Toán tử NOT thì đảo ngược kết quả có giá trị boolean.

XV. Thứ Tự Ưu Tiên Toán Tử Trong Java

Toán tử trong lập trình cũng có những thứ tự ưu tiên giống như các phép toán của chúng ta ngoài đời thực (vd: nhân chia trước cộng trừ sau). Trong Java độ ưu tiên các toán tử sẽ được sắp xếp như sau (Toán tử nào có độ ưu tiên cao hơn sẽ được thực thi trước).

Bảng dưới đây liệt kê thứ tự ưu tiên của các toán tử. Những toán tử với quyền ưu tiên cao nhất xuất hiện trên cùng của bảng, và các toán tử có quyền ưu tiên thấp nhất thì ở bên dưới cùng của bảng. Trong 1 biểu thức, các toán tử có quyền ưu tiên cao nhất được tính toán đầu tiên.