• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
anhcraft

Java Java cơ bản #16: Operator (Toán tử)

anhcraft

Thành viên BQT
DEVELOPER
THÀNH VIÊN
Tham gia
18/09/2016
Bài viết
3,165
I. Toán tử số học
Toán tử+-*/%
Tác dụngCộngTrừNhânChiaChia lấy phần dư

Các toán tử này chỉ dùng được khi biến/Parameter là số (chẳng hạn: int, short, long, vvv)
Ví dụ:
VJc6pKt.png


II. Toán tử gán
Toán tử này giúp bạn thao tác với biến:

Ví dụ toán tửA = BA += BA -= BA *= BA /= BA %= B
Tác dụngGán giá trị từ B vào biến ATương đương với A = A + BTương đương với A = A - BTương đương với A = A * BTương đương với A = A / BTương đương với A = A % B

Chú ý, với 5 toán tử cuối cùng, kiểu dữ liệu của biến phải là số (int, short, long, vvv) mới dùng được!
Ví dụ:
x5hDj7X.png

M7dcDec.png


Gía trị của biến kichThuoc bây giờ là -3 (chứ không phải bằng 0 nhé :v)
Mình sẽ viết dài ra (theo như cái bảng ở trên):

aMG0sR5.png


Java ưu tiên cái trong ngoặc trước... kichThuoc = kichThuoc + 3 nên bây giờ kichThuoc = 3
Nhưng cái kichThuoc phía sau dấu '=' vẫn chưa được thay đổi, nó vẫn bằng 0. Vì thế phép toán bây giờ là 0 - 3 = -3
Kết quả cuối cùng: kichThuoc = -3
=> Trong biểu thức toán, Java sẽ lấy giá trị từ biến trước rồi mới tính toán sau.

III. Toán tử một ngôi
Toán tử+-++--!
Tác dụngChỉ định giá trị dươngChỉ định giá trị âmTăng giá trị thêm 1Giảm giá trị đi 1Đảo ngược logic hiện tại: từ true thành false, từ false thành true

Chú ý:
- 4 toán tử đầu tiên dùng cho số
- Toán tử cuối cùng dành cho Boolean
- Nếu toán tử ++ đặt trước một biến thì nó sẽ tăng giá trị của biến đó rồi mới trả về (tương tự với toán tử --)
- Nếu toán tử ++ đặt sau một biến thì nó sẽ trả về giá trị đó rồi mới tăng giá trị của biến (tương tự với toán tử --)

Ví dụ:
A8rq8jD.png

Lúc này, biến kichThuoc từ object ConKu sẽ được trả về trước rồi mới được +1

Gỉa sử mình ghi thế này:
xRsewXi.png

Lúc này, biến kichThuoc từ object ConKu sẽ được +1 trước rồi mới trả về

Đối với toán tử "!":
Dfqn95X.png


III. Toán tử so sánh
Ví dụ toán tửA == BA != BA < BA <= BA > BA >= B
Tác dụngTrả về true khi A bằng B. Ngược lại, trả về falseTrả về true khi A khác B. Ngược lại, trả về falseTrả về true khi A bé hơn B. Ngược lại, trả về falseTrả về true khi A bé hơn hoặc bằng B. Ngược lại, trả về falseTrả về true khi A lớn hơn B. Ngược lại, trả về falseTrả về true khi A lớn hơn hoặc bằng B. Ngược lại, trả về false

Lưu ý:
- Chỉ sử dụng == và != đối với số/Enum. Với Object, phải dùng #equals, ví dụ ObjectA.equals(ObjectB). (Mình sẽ giải thích lý do sau)
- Các toán tử còn lại chỉ dùng để so sánh số

Ví dụ:
9vFprv7.png


IV. Toán tử điều kiện
&&||A ? B : C
Được đặt giữa các biểu thức, trả về true khi mọi biểu thức ngang hàng đều là true. Ngược lại là false.Được đặt giữa các biểu thức, trả về true khi có một biểu thức ngang hàng là true. Ngược lại nếu toàn bộ đều là false thì trả về false.Nếu A là true thì trả về B, ngược lại là C

Ví dụ:
6Tmgs9Y.png


Trường hợp 1: Vì cả ba biến a, b và c đều là true nên trả về true
Trường hợp 2: Vì trong hai biến a và e có biến e là false nên trả về false
Trường hợp 3: Vì trong hai biến c và d có biến c là true nên trả về true
Trường hợp 4: Vì biến d là false nên trả về biến y
Trường hợp 4: Vì biến d là false, nhưng co toán tử '!' ở trước nên giờ kết quả biểu thức !d là true => trả về biến x

Nâng cao một chút về toán tử điều kiện:
Giữ nguyên các biến ở trong ảnh trên, mình sửa code thế này:
Java:
System.out.println(((a != f) || (e == c)) && (b != (d == a)) ? x : y);
Nó sẽ trả về là 10. Giờ mình sẽ giải thích cách mà cái này hoạt động.
Mã:
((a != f) || (e == c)) && (b != (d == a)) ? x : y
((true != false) || (false == true)) && (true != (false == true)) ? x : y
(true || (false == true)) && (true != (false == true)) ? x : y
(true || false) && (true != (false == true)) ? x : y
true && (true != (false == true)) ? x : y
true && (true != false) ? x : y
true && true ? x : y
true ? x : y
x
Như mình đã nói, Java sẽ lấy giá trị từ biến trước rồi mới tính toán, vì thế mình ghi ra dữ liệu hiện tại của các biến trên.
Sau đó xét các cặp trong cùng theo quy tắc ở trong bảng trên, chẳng hạn true != false => true; hay false == true => false
Rút gọn lần lượt tới toán tử ?:, vì đằng trước là true nên chọn x => trả về 10

Vậy điều này giúp bạn làm được gì? Đó là giúp code bạn ngắn gọn hơn. Sau này khi làm plugin, chắc chắn sẽ có một lần cần phải ghi ra những biểu thức phức tạp như trên <(")
Chẳng hạn: Gửi thông báo cho member nếu là VIP, hoặc là vừa có cấp độ > 10 vừa có money > 10000
Thì biểu thức cần dùng là (vip || ((level > 10) && (money > 10000)))



Hết :D
 
Similar content Most view Xem thêm
Back
Top Bottom