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 ,=,> 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:

    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:

    Đâ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:

    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

    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:

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

    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:

    đó 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:

    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:

    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.

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

Chủ Đề