toan-tu-vi-du-ve-toan-tu-trong-java

Các toán tử thường dùng trong Java

Trong bài này, mìnhsẽ giới thiệu đến các bạn các toán tử cơ bản (Basic Operators) trong Java. Sau đó, mình sẽ đưa ra một ví dụ tổng hợp những gì chúng ta học từ đầu series tới giờ và có sử dụng các loại toán tử này.

Các toán tử cơ bản (Basic Operators) trong Java.

Trong Java, chúng ta thường gặp các loại toán tử sau: Toán tử gán, toán tử số học, toán tử một ngôi, toán tử so sánh, toán tử luận lý điều kiện và cuối cùng tôi sẽ giới thiệu đến các bạn độ ưu tiên giữa các toán tử trong Java.

LUYỆN THI CHỨNG CHỈ OCA

Toán tử gán.

Toán tửMô tảVí dụ
=Gán giá trị từ các toán hạng bên phải cho toán hạng bên trái.a = 1 sẽ gán giá trị 1 cho a.
+=Cộng hoặc nối chuỗi toán hạng bên phải vào toán hạng bên trái và gán lại kết quả cho toán hạng bên trái.a += 1 (tương đương với a = a + 1).
-=Trừ toán hạng bên phải khỏi toán hạng trái và gán lại kết quả cho toán hạng bên trái.a -=1 (tương đương với a = a - 1).
*=Nhân toán hạng bên phải với toán hạng bên trái và gán lại kết quả cho toán hạng bên trái.a *= 2 (tương đương với a = a * 2).
/=Chia toán hạng bên phải cho toán hạng bên trái và gán lại kết quả cho toán hạng bên trái.a /= 2 (tương đương với a = a / 2).
%=Chia toán hạng bên phải cho toán hạng bên trái và lấy phần dư gán cho toán hạng bên trái.a %= 2 (tương đương với a = a % 2).

Toán tử số học.

Toán tửMô tả
+Toán tử cộng.
Toán tử trừ.
*Toán tử nhân.
/Toán tử chia.
%Toán tử chia lấy phần dư.

Toán tử 1 ngôi.

Toán tửMô tả
+Chỉ định giá trị không âm.
Chỉ định giá trị âm.
++Tăng giá trị của toán hạng đó lên 1 đơn vị.
Giảm giá trị của toán hạng đó đi 1 đơn vị.
!Phép toán phủ định trên một giá trị luận lý. Nếu một điều kiện đang nhận giá trị là true thì toán tử này sẽ thay đổi giá trị đó thành false và ngược lại.

Đối với toán tử ++ và -- thì trong Java có 2 loại đó là Prefix (tiền tố) và Postfix (hậu tố).

  • Đối với Prefix thì toán tử ++ hoặc -- sẽ nằm đằng sau toán hạng đó. Ví dụ: a++ hoặc a--.
  • Đối với Postfix thì toán tử ++ hoặc -- sẽ đứng đằng trước toán hạng đó. Ví dụ: ++a hoặc --a.

Học Java ở đâu tốt nhất Hà Nội?

Vậy sự khác nhau giữa Prefix và Postfix là gì? Câu trả lời là nếu như toán hạng (biến) đó chỉ đứng một mình (ví dụ a++ hoặc a--) thì Postfix hay Prefix là giống nhau nhưng trường hợp đó rất ít khi xảy ra, bởi vì đối với những chương trình lớn và có tính phức tạp thì chúng ta thường phải giải quyết những biểu thức tổng hợp của nhiều toán tử. Vậy giả sử khi gặp những biểu thức tổng hợp này thì chúng ta phải giải quyết như thế nào? Tôi sẽ hướng dẫn các bạn trong ví dụ dưới đây:

Giả sử chúng ta có đoạn chương trình như sau:

public class PostfixPrefix {
 
    public static void main(String[] args) {
        int firstVariable = 5, secondVariable = 7;
        int result = firstVariable++ + ++secondVariable - 8;
        System.out.println("First variable = " + firstVariable);
        System.out.println("Second variable = " + secondVariable);
        System.out.println("Third variable = " + result);
    }
 
}Code language: JavaScript (javascript)

Khi gặp 1 vấn đề như vậy thì chúng ta thực hiện theo các bước như sau:

Bước 1: Ưu tiên xử lý Prefix trước.

Bước 2: Xử lý các phép toán còn lại.

Bước 3: Gán giá trị cho toán hạng nằm bên trái dấu bằng trước.

Bước 4: Xử lý Postfix.

Dựa theo các bước trên, chúng ta giải bài toán trên như sau:

Bước thực hiệnKết quả
Bước 1: Xử lý Prefix trước: Chúng ta nhận thấy trong đoạn chương trình trên có ++secondVariable là Prefix nên chúng ta xử lý trước.++secondVariable = 7+ 1 = 8.
Bước 2: Xử lý các phép toán còn lại.5 + 8 – 8 = 5.
Bước 3: Gán kết quả vừa có cho toán hạng bên trái.result = 5
Bước 4: Xử lý Postfix.firstVariable++ = 5 + 1= 6.

Kết quả cuối cùng là: firstVariable = 6, secondVariable = 8, result = 5.

Toán tử so sánh

Toán tửMô tả
== (So sánh bằng)So sánh giá trị của toán hạng bên trái và toán hạng bên phải có bằng nhau hay không. Nếu có thì kết quả trả về true, ngược lại trả về false.
!= (So sánh không bằng)So sánh giá trị của toán hạng bên trái và toán hạng bên phải có không bằng nhau hay không. Nếu có thì kết quả trả về true, ngược lại trả về false.
> (So sánh lớn hơn).So sánh giá trị của toán hạng bên trái có lớn hơn toán hạng bên phải hay không. Nếu có thì kết quả trả về true, ngược lại trả về false.
>= (So sánh lớn hơn hoặc bằng)So sánh giá trị của toán hạng bên trái có lớn hơn hoặc bằng toán hạng bên phải hay không. Nếu có thì kết quả trả về true, ngược lại trả về false.
< (So sánh nhỏ hơn)So sánh giá trị của toán hạng bên trái có nhỏ hơn toán hạng bên phải hay không. Nếu có thì kết quả trả về true, ngược lại trả về false.
<= (So sánh nhỏ hơn hoặc bằng)So sánh giá trị của toán hạng bên trái có nhỏ hơn hoặc bằng toán hạng bên phải hay không. Nếu có thì kết quả trả về true, ngược lại trả về false.

Sau đâu tôi sẽ đưa ra ví dụ minh họa toán tử so sánh.

import java.util.Scanner;
 
public class ToanTuSoSanh {
    public static void main(String[] args) {
        int firstVariable, secondVariable;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Nhập vào số thứ nhất: ");
        firstVariable = scanner.nextInt();
        System.out.println("Nhập vào số thứ hai: ");
        secondVariable = scanner.nextInt();
        System.out.println("Kết quả của so sánh bằng " + firstVariable + " và " + 
                secondVariable + " là " + (firstVariable == secondVariable));
        System.out.println("Kết quả của so sánh không bằng " + firstVariable + " và " + 
                secondVariable + " là " + (firstVariable != secondVariable));
        System.out.println("Kết quả của so sánh lớn hơn " + firstVariable + " và " + 
                secondVariable + " là " + (firstVariable > secondVariable));
        System.out.println("Kết quả của so sánh lớn hơn hoặc bằng " + firstVariable + " và " + 
                secondVariable + " là " + (firstVariable >= secondVariable));
        System.out.println("Kết quả của so sánh nhỏ hơn " + firstVariable + " và " + 
                secondVariable + " là " + (firstVariable < secondVariable));
        System.out.println("Kết quả của so sánh nhỏ hơn hoặc bằng " + firstVariable + " và " + 
                secondVariable + " là " + (firstVariable <= secondVariable));
    }
}Code language: JavaScript (javascript)

Kết quả của ví dụ trên như sau:

Nhập vào số thứ nhất:
6
Nhập vào số thứ hai:
Kết quả của so sánh bằng 66true
Kết quả của so sánh không bằng 66false
Kết quả của so sánh lớn hơn 66false
Kết quả của so sánh lớn hơn hoặc bằng và 6true
Kết quả của so sánh nhỏ hơn 66false
Kết quả của so sánh nhỏ hơn hoặc bằng 66trueCode language: JavaScript (javascript)

Toán tử luận lý điều kiện

Toán tửMô tả
&&Phép toán luận lý VÀ (AND) trên 2 giá trị, Kết quả trả về true khi cả hai đều đúng.
||Phép toán luận lý HOẶC (OR) trên 2 giá trị. Kết quả trả về false khi cả hai đều sai.
?:Toán tử điều kiện 3 ngôi.

Đoạn chương trình dưới đây sẽ giúp các bạn hiểu rõ hơn về toán tử luận lý điều kiện.

public class ToanTuLuanLyDieuKien {
    public static void main(String[] args) {
        int firstNumber, secondNumber;  
         
        Scanner scanner = new Scanner(System.in);
        System.out.println("Nhập vào số thứ nhất: ");
        firstNumber = scanner.nextInt();
        System.out.println("Nhập vào số thứ hai: ");
        secondNumber = scanner.nextInt();
         
        // Sử dụng toán tử luận lý điều kiện
        System.out.println("Kết quả của (firstNumber < 10) && (secondNumber < 10) là " +
                 ((firstNumber < 10) && (secondNumber < 10)));    // Toán tử AND
        System.out.println("Kết quả của (firstNumber < 10) || (secondNumber < 10) là " + 
                 ((firstNumber < 10) || (secondNumber < 10)));    // Toán tử OR
    }
 
}Code language: JavaScript (javascript)

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

Nhập vào số thứ nhất:
8
Nhập vào số thứ hai:
12
Kết quả của (firstNumber < 10) && (secondNumber < 10) là false
Kết quả của (firstNumber < 10) || (secondNumber < 10) là true
Code language: JavaScript (javascript)

Giải thích chương trình:

Khi biên dịch chương trình, tôi sẽ nhập vào firstNumber = 8 và secondNumber = 12.

Bước 1: Trong toán tử AND các bạn nhận thấy tôi so sánh 2 số vừa nhập với 10, vì số thứ nhất = 8 nhỏ hơn 10 là đúng và số thứ hai = 12 nhỏ hơn 10 là sai và theo mô tả của toán tử AND thì biểu thức sẽ trả về kết quả đúng ⇔ cả hai biểu thức con đều đúng mà trong ví dụ này chỉ có 1 biểu thức con đúng nên trình biên dịch sẽ trả về kết quả là false.

Bước 2: Tương tự, trong toán tử OR các bạn nhận thấy 8 nhỏ hơn 10 là đúng và 12 nhỏ hơn 10 là sai và theo mô tả của toán tử OR thì biểu thức sẽ trả về kết quả sai ⇔ cả hai biểu thức con đều sai, nhưng trong trường hợp này chỉ có 1 biểu thức con sai nên kết quả của chương trình vẫn là true.

Độ ưu tiên giữa các toán tử.

Thứ tựToán tử
1Các toán tử 1 ngôi: +-++--
2Các toán tử số học: */+-
3Các toán tử: ><>=<===!=
4Các toán tử luận lý điều kiện: &&||?:
5Các toán tử gán: =*=, /=+=, -=

Trong một số trường hợp, chúng ta nên dùng dấu ngoặc tròn để nhóm các biểu thức lại để quy định độ ưu tiên giữa các toán tử. Dấu ngoặc tròn làm cho biểu thức rõ ràng, rõ nghĩa hơn và tránh được những sai sót trong quá trình thực thi biểu thức.

Trên đây mình đã liệt kê các toán tử thường dùng trong Java, chúc bạn học tốt.

Happy learning!!!

Bài viết liên quan

Leave a Reply

Your email address will not be published.