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 (
!=
)
==
, 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.
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 x
và sau đó chúng tôi in nó x
ra 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
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 x
1 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ó x
khô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
+=
-=
*=
/=
%=
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 += y
có 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 -=
, *=
và /=
.%=
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 -true
và false
. 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 booleanpublic 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ịtrue
nế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ềtrue
khi í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) является истинной.
GO TO FULL VERSION