- Tham gia
- 18/09/2016
- Bài viết
- 3,165
I. Toán tử số học
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ụ:
II. Toán tử gán
Toán tử này giúp bạn thao tác với biến:
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ụ:
Gía trị của biến kichThuoc bây giờ là -3 (chứ không phải bằng 0 nhé
)
Mình sẽ viết dài ra (theo như cái bảng ở trên):
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
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ụ:
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:
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ử "!":
III. Toán tử so sánh
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ụ:
IV. Toán tử điều kiện
Ví dụ:
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:
Nó sẽ trả về là 10. Giờ mình sẽ giải thích cách mà cái này hoạt động.
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
| Toán tử | + | - | * | / | % |
| Tác dụng | Cộng | Trừ | Nhân | Chia | Chia 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ụ:
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 = B | A += B | A -= B | A *= B | A /= B | A %= B |
| Tác dụng | Gán giá trị từ B vào biến A | Tương đương với A = A + B | Tương đương với A = A - B | Tương đương với A = A * B | Tương đương với A = A / B | Tươ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ụ:
Gía trị của biến kichThuoc bây giờ là -3 (chứ không phải bằng 0 nhé
)Mình sẽ viết dài ra (theo như cái bảng ở trên):
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ụng | Chỉ định giá trị dương | Chỉ định giá trị âm | Tăng giá trị thêm 1 | Giả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ụ:
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:
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ử "!":
III. Toán tử so sánh
| Ví dụ toán tử | A == B | A != B | A < B | A <= B | A > B | A >= B |
| Tác dụng | Trả về true khi A bằng B. Ngược lại, trả về false | Trả về true khi A khác B. Ngược lại, trả về false | Trả về true khi A bé hơn B. Ngược lại, trả về false | Trả về true khi A bé hơn hoặc bằng B. Ngược lại, trả về false | Trả về true khi A lớn hơn B. Ngược lại, trả về false | Trả 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ụ:
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ụ:
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);
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
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

