Xin chào! Hôm nay chúng ta sẽ xem xét một chủ đề rất quan trọng, đó là các phép toán số trong Java . Những con số ở khắp mọi nơi trong lập trình. Nếu tìm hiểu sâu hơn về chương trình giảng dạy ở trường, bạn sẽ nhớ rằng tất cả thông tin trên máy tính đều được trình bày dưới dạng số - sự kết hợp của số 0 và số 1 - còn được gọi là mã nhị phân. Các phép toán số trong Java - 2Có rất nhiều phép tính với các con số trong lập trình, vì vậy chúng ta sẽ xem xét những phép tính quan trọng nhất bằng các ví dụ :)

Các phép tính toán học

Hãy bắt đầu với điều đơn giản nhất - với các phép tính số học. Đây là các phép cộng (+ dấu), phép trừ (-), phép nhân (*) và phép chia nổi tiếng (/).
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       System.out.println(x+y);
       System.out.println(x-y);
       System.out.println(x*y);
       System.out.println(x/y);
   }
}
Đầu ra của bảng điều khiển:

1032
966
32967
30
Bạn đã sử dụng tất cả điều này. Bạn có thể thêm một phép toán cho chúng %- phần còn lại của phép chia.
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 33%2;
       System.out.println(y);
   }
}
Đầu ra của bảng điều khiển:

1
Trong ví dụ này, chúng ta chia 33 cho 2. Kết quả là chúng ta nhận được 16 và vẫn còn một “đuôi” thừa không chia hết cho 2 - một. “Cái đuôi” này sẽ là kết quả của thao tác “phần dư của phép chia”. Java (cũng như toán học) triển khai các toán tử so sánh . Bạn có thể cũng biết họ từ trường học:
  • bằng ( ==)
  • hơn ( >)
  • ít hơn ( <)
  • lớn hơn hoặc bằng ( >=)
  • ít hơn hoặc bằng ( <=)
  • không công bằng ( !=)
Ở đây cần chú ý đến một điểm quan trọng mà nhiều người mới bắt đầu mắc lỗi. Phép toán “bằng” được viết là ==, và không có một dấu =. Ký hiệu đơn vị =trong Java là toán tử gán, trong đó một biến được gán một số, chuỗi hoặc giá trị của một biến khác. Các phép toán số trong Java - 3
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x=y);// expect false to be printed to the console
   }
}
Đầu ra của bảng điều khiển:

999
Ối! Đây rõ ràng không phải là kết quả mà chúng tôi mong đợi. Đây là một loại dữ liệu hoàn toàn khác: chúng tôi dự kiến ​​sẽ thấy boolean, nhưng lại nhận được một con số. Điều này là do trong ngoặc đơn chúng ta có thao tác gán chứ không phải phép so sánh. x=y Giá trị y(999) được gán cho biến xvà sau đó chúng tôi in nó xra bảng điều khiển. Tùy chọn đúng:
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x==y);
   }
}
Đầu ra của bảng điều khiển:

false
Bây giờ chúng ta đã so sánh chính xác 2 số rồi! :) Một đặc điểm khác của phép gán ( =) là nó có thể được thực hiện theo kiểu “xâu chuỗi”:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;
       int z = 256;

       x = y = z;
       System.out.println(x);
   }
}
Đầu ra của bảng điều khiển:

256
Hãy nhớ: bài tập được thực hiện từ phải sang trái. Biểu thức này ( x = y = z) sẽ được thực hiện theo các bước:
  • y = z, tức là y = 256
  • x = y, tức là x = 256

Hoạt động đơn nhất

Chúng được gọi là "đơn nhất" từ từ "uno" - "một". Họ nhận được tên này bởi vì, không giống như những cái trước, chúng được thực hiện trên một số chứ không phải trên một số. Bao gồm các:
  • Điểm trừ đơn nhất. Nó đảo ngược dấu của số.

    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
    
           // change the sign for the first time
           x = -x;
           System.out.println(x);
    
           // change the sign a second time
           x= -x;
           System.out.println(x);
       }
    }

    Đầu ra của bảng điều khiển:

    
    -999
    999

    Chúng tôi đã sử dụng dấu trừ đơn nhất hai lần. Kết quả là số của chúng ta lúc đầu trở thành âm, sau đó lại dương!

  • Tăng ( ++) và giảm ( --)

    Một thao tác ++tăng một số và một thao tác --giảm số đó đi cùng một đơn vị.

    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
           x++;
           System.out.println(x);
    
           x--;
           System.out.println(x);
       }
    }

    Đầu ra của bảng điều khiển:

    
    1000
    999
Dạng ký hiệu này có thể quen thuộc với bạn nếu bạn đã từng nghe nói đến ngôn ngữ C++. Với cái tên thú vị như vậy, những người tạo ra nó đã truyền đạt ý tưởng của họ: “C++ là một phần mở rộng của ngôn ngữ C”. Một phiên bản cải tiến phổ biến của Notepad được gọi là Notepad++ Tâm điểm. Có hai loại phép toán tăng và giảm: hậu tố và tiền tố. x++- ký hiệu hậu tố ++x- ký hiệu tiền tố Sự khác biệt cơ bản là gì nếu bạn đặt dấu cộng và dấu trừ trước hoặc sau số? Hãy xem trong một ví dụ:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
   }
}
Đầu ra của bảng điều khiển:

999
Có điều gì sai không! Chúng tôi muốn tăng thêm x1 và gán giá trị mới cho biến y. Nghĩa là, y phải bằng 1000. Nhưng chúng ta có một kết quả khác - 999. Hóa ra là nó xkhông tăng và thao tác tăng dần không hoạt động? Nó hoạt động như thế nào. Để xác minh điều này, hãy thử in x ra bảng điều khiển ở cuối :)
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
       System.out.println(x);
   }
}
Đầu ra của bảng điều khiển:

999
1000
Trên thực tế, đó là lý do tại sao thao tác hậu tố được gọi như vậy: nó được thực hiện sau biểu thức chính. Nghĩa là, trong trường hợp của chúng ta: int y = x++; đầu tiên nó được thực thi y = x(và biến y sẽ được gán giá trị ban đầu x) và chỉ sau đó x++ .. Điều gì sẽ xảy ra nếu chúng ta không hài lòng với hành vi này? Bạn cần sử dụng ký hiệu tiền tố:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = ++x;
       System.out.println(y);
   }
}
Trong trường hợp này, nó sẽ hoạt động trước ++x và chỉ sau đó. y = x; Sự khác biệt này cần được ghi nhớ ngay để không mắc lỗi trong một chương trình thực, trong đó mọi hành vi có thể bị đảo lộn vì điều này :)

Hoạt động kết hợp

Ngoài ra, trong Java còn có cái gọi là thao tác kết hợp. Họ sử dụng kết hợp hai hoạt động:
  • Phân công
  • phép tính số học
Điều này bao gồm các hoạt động:
  • +=
  • -=
  • *=
  • /=
  • %=
Hãy xem một ví dụ:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       x += y;
       System.out.println(x);
   }
}
Đầu ra của bảng điều khiển:

1032
x += ycó nghĩa x = x + y. Để cho ngắn gọn, hai ký tự liên tiếp được sử dụng. Điều này cũng hoạt động với sự kết hợp của -=, *=/=.%=

Các phép toán logic

Ngoài các phép toán trên số, Java còn có các phép toán trên các biến Boolean - truefalse. Các thao tác này được thực hiện bằng cách sử dụng các toán tử logic
  • !- Toán tử “KHÔNG”. Đảo ngược giá trị của biến boolean

    public class Main {
    
       public static void main(String[] args) {
    
           boolean x = true;
           System.out.println(!x);
       }
    }

    Đầu ra của bảng điều khiển:

    
    false

  • &&— toán tử “AND”. Chỉ trả về một giá trị truenếu cả hai toán hạng đều là true.

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 && 100 > 200);
           System.out.println(100 > 50 && 100 >= 100);
       }
    }

    Đầu ra của bảng điều khiển:

    
    false
    true

    Kết quả của thao tác đầu tiên là false, vì một trong các điều kiện sai, cụ thể là 100 > 200. Toán tử yêu cầu tất cả các điều kiện phải đúng (chẳng hạn như ở dòng thứ hai) &&để trả về .true

  • ||- Toán tử “HOẶC”. Trả về truekhi ít nhất một trong các toán hạng đúng.

    Ở đây, ví dụ trước của chúng tôi sẽ hoạt động khác:

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 || 100 > 200);
       }
    }

    Đầu ra của bảng điều khiển:

    
    true

    Выражение 100 > 200 по-прежнему ложно, но оператору “or” вполне достаточно, что первая часть (100 > 10) является истинной.