⚖️ So Sánh Giá Trị - Comparison Operators
Chào mừng đến với bài học về Comparison Operators - cách so sánh giá trị trong Café!
🎯 Món Ăn Hôm Nay
Tưởng tượng bạn đang quản lý quán cà phê:
- Giá đồ uống có đắt hơn budget không? → So sánh >
- Đã đủ 18 tuổi để vào quán chưa? → So sánh >=
- Mã giảm giá có hợp lệ không? → So sánh ==
Đó chính là Comparison Operators - so sánh và đưa ra quyết định!
⚖️ Comparison Operators Là Gì?
Comparison Operators = Cân so sánh trong quán (so sánh 2 giá trị)
Kết quả luôn là boolean: true (đúng) hoặc false (sai)
int giaLatte = 50000;
int budget = 60000;
boolean muaDuoc = giaLatte <= budget; // true
System.out.println("Mua được Latte: " + muaDuoc);
☕ Ẩn Dụ Café:
- == = Kiểm tra giá bằng nhau
- != = Kiểm tra giá khác nhau
- > = Đắt hơn
- < = Rẻ hơn
- >= = Đắt hơn hoặc bằng
- <= = Rẻ hơn hoặc bằng
📊 Bảng 6 Toán Tử So Sánh
| Toán Tử | Ý Nghĩa | Ví Dụ Café | Kết Quả |
|---|---|---|---|
== | Bằng nhau | 50000 == 50000 | true |
!= | Khác nhau | 50000 != 45000 | true |
> | Lớn hơn | 60000 > 50000 | true |
< | Nhỏ hơn | 45000 < 50000 | true |
>= | Lớn hơn hoặc bằng | 50000 >= 50000 | true |
<= | Nhỏ hơn hoặc bằng | 45000 <= 50000 | true |
👨🍳 Câu Chuyện Trong Quán
Một ngày làm việc tại quán:
Tình huống 1: Kiểm Tra Giá
public class KiemTraGia {
public static void main(String[] args) {
int giaLatte = 50000;
int giaCappuccino = 55000;
int budgetKhach = 50000;
// So sánh giá
System.out.println("Latte = " + giaLatte + " VND");
System.out.println("Budget = " + budgetKhach + " VND");
System.out.println("Mua được Latte? " + (giaLatte <= budgetKhach)); // true
System.out.println("Mua được Cappuccino? " + (giaCappuccino <= budgetKhach)); // false
}
}
Tình huống 2: Kiểm Tra Độ Tuổi
public class KiemTraTuoi {
public static void main(String[] args) {
int tuoiKhach = 16;
int tuoiToiThieu = 18;
if (tuoiKhach >= tuoiToiThieu) {
System.out.println("✅ Được vào quán");
} else {
System.out.println("❌ Chưa đủ tuổi vào quán");
}
}
}
📝 Công Thức Nấu (Code Examples)
Ví Dụ 1: So Sánh Giá Đồ Uống
public class SoSanhGia {
public static void main(String[] args) {
int giaEspresso = 45000;
int giaLatte = 50000;
int giaMocha = 60000;
System.out.println("📋 BẢNG GIÁ:");
System.out.println("Espresso: " + giaEspresso);
System.out.println("Latte: " + giaLatte);
System.out.println("Mocha: " + giaMocha);
System.out.println();
// So sánh ==
System.out.println("Espresso = Latte? " + (giaEspresso == giaLatte)); // false
// So sánh !=
System.out.println("Espresso ≠ Latte? " + (giaEspresso != giaLatte)); // true
// So sánh >
System.out.println("Mocha > Latte? " + (giaMocha > giaLatte)); // true
// So sánh <
System.out.println("Espresso < Latte? " + (giaEspresso < giaLatte)); // true
// So sánh >=
System.out.println("Latte >= 50000? " + (giaLatte >= 50000)); // true
// So sánh <=
System.out.println("Espresso <= 50000? " + (giaEspresso <= 50000)); // true
}
}
Output:
📋 BẢNG GIÁ:
Espresso: 45000
Latte: 50000
Mocha: 60000
Espresso = Latte? false
Espresso ≠ Latte? true
Mocha > Latte? true
Espresso < Latte? true
Latte >= 50000? true
Espresso <= 50000? true
Ví Dụ 2: Kiểm Tra Đơn Hàng
public class KiemTraDonHang {
public static void main(String[] args) {
int soLuongDat = 10;
int soLuongKho = 8;
int soLuongToiThieu = 5;
System.out.println("📦 KIỂM TRA KHO:");
System.out.println("Đặt: " + soLuongDat + " ly");
System.out.println("Kho: " + soLuongKho + " ly");
System.out.println();
// Kiểm tra đủ hàng
if (soLuongKho >= soLuongDat) {
System.out.println("✅ Đủ hàng để giao!");
} else {
System.out.println("❌ Không đủ hàng!");
System.out.println("⚠️ Thiếu: " + (soLuongDat - soLuongKho) + " ly");
}
// Kiểm tra cần đặt thêm
if (soLuongKho < soLuongToiThieu) {
System.out.println("🚨 Cần đặt hàng ngay!");
}
}
}
Output:
📦 KIỂM TRA KHO:
Đặt: 10 ly
Kho: 8 ly
❌ Không đủ hàng!
⚠️ Thiếu: 2 ly
Ví Dụ 3: Hệ Thống Giảm Giá
public class HeThongGiamGia {
public static void main(String[] args) {
int tongTien = 120000;
int nguongGiamGia1 = 100000; // Giảm 10%
int nguongGiamGia2 = 200000; // Giảm 20%
System.out.println("💰 Tổng tiền: " + tongTien + " VND\n");
if (tongTien >= nguongGiamGia2) {
System.out.println("🎉 Giảm 20%!");
int giamGia = tongTien * 20 / 100;
System.out.println("Giảm: " + giamGia + " VND");
System.out.println("Thanh toán: " + (tongTien - giamGia) + " VND");
} else if (tongTien >= nguongGiamGia1) {
System.out.println("🎁 Giảm 10%!");
int giamGia = tongTien * 10 / 100;
System.out.println("Giảm: " + giamGia + " VND");
System.out.println("Thanh toán: " + (tongTien - giamGia) + " VND");
} else {
System.out.println("Không có giảm giá");
System.out.println("Thanh toán: " + tongTien + " VND");
}
}
}
Output:
💰 Tổng tiền: 120000 VND
🎁 Giảm 10%!
Giảm: 12000 VND
Thanh toán: 108000 VND
Ví Dụ 4: So Sánh String (Tên Khách)
public class KiemTraKhachVIP {
public static void main(String[] args) {
String tenKhach1 = "Anh Minh";
String tenKhach2 = "Anh Minh";
String tenKhach3 = "Chị Lan";
// So sánh String với ==
System.out.println("== So sánh tham chiếu:");
System.out.println(tenKhach1 == tenKhach2); // true (cùng pool)
// So sánh String với .equals()
System.out.println("\nequals() - So sánh nội dung:");
System.out.println(tenKhach1.equals(tenKhach2)); // true
System.out.println(tenKhach1.equals(tenKhach3)); // false
// Kiểm tra khách VIP
String loaiKhach = "VIP";
if (loaiKhach.equals("VIP")) {
System.out.println("\n🌟 Khách VIP - Ưu đãi đặc biệt!");
}
}
}
Ví Dụ 5: Tìm Món Rẻ Nhất
public class TimMonReNhat {
public static void main(String[] args) {
int giaEspresso = 45000;
int giaLatte = 50000;
int giaCappuccino = 55000;
int giaReNhat = giaEspresso; // Giả sử Espresso rẻ nhất
String monReNhat = "Espresso";
// So sánh với Latte
if (giaLatte < giaReNhat) {
giaReNhat = giaLatte;
monReNhat = "Latte";
}
// So sánh với Cappuccino
if (giaCappuccino < giaReNhat) {
giaReNhat = giaCappuccino;
monReNhat = "Cappuccino";
}
System.out.println("🏆 MÓN RẺ NHẤT:");
System.out.println("Tên: " + monReNhat);
System.out.println("Giá: " + giaReNhat + " VND");
}
}
Output:
🏆 MÓN RẺ NHẤT:
Tên: Espresso
Giá: 45000 VND
🔥 Thực Hành Trong Quán
Bài Tập 1: Kiểm Tra Nhiệt Độ
public class KiemTraNhietDo {
public static void main(String[] args) {
int nhietDoHienTai = 85;
int nhietDoLyTuong = 90;
int saiSoChoPhep = 5;
System.out.println("🌡️ KIỂM TRA NHIỆT ĐỘ:");
System.out.println("Hiện tại: " + nhietDoHienTai + "°C");
System.out.println("Lý tưởng: " + nhietDoLyTuong + "°C");
System.out.println();
if (nhietDoHienTai == nhietDoLyTuong) {
System.out.println("✅ Nhiệt độ hoàn hảo!");
} else if (nhietDoHienTai >= nhietDoLyTuong - saiSoChoPhep &&
nhietDoHienTai <= nhietDoLyTuong + saiSoChoPhep) {
System.out.println("✅ Nhiệt độ chấp nhận được");
} else if (nhietDoHienTai < nhietDoLyTuong) {
System.out.println("⚠️ Quá lạnh! Cần đun thêm");
} else {
System.out.println("⚠️ Quá nóng! Cần để nguội");
}
}
}
Bài Tập 2: Xếp Hạng Khách Hàng
public class XepHangKhach {
public static void main(String[] args) {
int soLanMua = 15;
System.out.println("🏅 XẾP HẠNG KHÁCH HÀNG:");
System.out.println("Số lần mua: " + soLanMua);
System.out.println();
String hang;
if (soLanMua >= 50) {
hang = "💎 Kim Cương";
} else if (soLanMua >= 30) {
hang = "🥇 Vàng";
} else if (soLanMua >= 10) {
hang = "🥈 Bạc";
} else {
hang = "🥉 Đồng";
}
System.out.println("Hạng: " + hang);
}
}
Bài Tập 3: Tính Tiền Giờ Cao Điểm
public class TinhTienGioCaoDiem {
public static void main(String[] args) {
int gio = 19; // 7h tối
int giaGoc = 50000;
int giaCaoDiem;
System.out.println("⏰ GIỜ: " + gio + ":00");
System.out.println("💰 Giá gốc: " + giaGoc + " VND\n");
// Giờ cao điểm: 7h-9h sáng, 5h-8h tối
if ((gio >= 7 && gio < 9) || (gio >= 17 && gio < 20)) {
giaCaoDiem = giaGoc + 10000;
System.out.println("⚡ GIỜ CAO ĐIỂM!");
System.out.println("Phụ thu: +10,000 VND");
System.out.println("Tổng: " + giaCaoDiem + " VND");
} else {
System.out.println("✅ Giờ bình thường");
System.out.println("Tổng: " + giaGoc + " VND");
}
}
}
Bài Tập 4: Kiểm Tra Mã Giảm Giá
public class KiemTraMa {
public static void main(String[] args) {
String maNhap = "CAFE2024";
String maDung = "CAFE2024";
int tongTien = 150000;
System.out.println("🎟️ KIỂM TRA MÃ GIẢM GIÁ:");
System.out.println("Mã nhập: " + maNhap);
System.out.println("Tổng tiền: " + tongTien + " VND\n");
if (maNhap.equals(maDung)) {
int giamGia = tongTien * 15 / 100;
int thanhToan = tongTien - giamGia;
System.out.println("✅ Mã hợp lệ!");
System.out.println("Giảm 15%: -" + giamGia + " VND");
System.out.println("Thanh toán: " + thanhToan + " VND");
} else {
System.out.println("❌ Mã không hợp lệ!");
System.out.println("Thanh toán: " + tongTien + " VND");
}
}
}
⚠️ Lỗi Thường Gặp
Lỗi 1: So Sánh String Với ==
// ❌ SAI: Dùng == cho String
String ten1 = new String("Latte");
String ten2 = new String("Latte");
System.out.println(ten1 == ten2); // false (khác tham chiếu)
// ✅ ĐÚNG: Dùng .equals()
System.out.println(ten1.equals(ten2)); // true (cùng nội dung)
Lỗi 2: Nhầm = Với ==
// ❌ SAI: Dùng = (gán) thay vì == (so sánh)
int gia = 50000;
if (gia = 50000) { // ❌ Lỗi cú pháp!
System.out.println("OK");
}
// ✅ ĐÚNG: Dùng ==
if (gia == 50000) { // ✅ So sánh
System.out.println("OK");
}
Lỗi 3: So Sánh Số Thực (float/double)
// ❌ SAI: So sánh trực tiếp float/double
double gia1 = 0.1 + 0.2; // 0.30000000000000004
double gia2 = 0.3;
System.out.println(gia1 == gia2); // false!
// ✅ ĐÚNG: So sánh với epsilon
double epsilon = 0.0001;
System.out.println(Math.abs(gia1 - gia2) < epsilon); // true
Lỗi 4: Quên Thứ Tự Ưu Tiên
// ❌ SAI: Thiếu dấu ngoặc
int gia = 50000;
if (gia > 40000 && gia < 60000 || gia == 70000) {
// Khó hiểu! && ưu tiên hơn ||
}
// ✅ ĐÚNG: Dùng dấu ngoặc rõ ràng
if ((gia > 40000 && gia < 60000) || (gia == 70000)) {
// Rõ ràng hơn!
}
💡 Bí Quyết Của Barista
- Dùng .equals() cho String: Không dùng
==để so sánh String - Phân biệt = và ==:
=là gán,==là so sánh - Cẩn thận với float/double: Dùng epsilon khi so sánh
- Dùng dấu ngoặc: Làm rõ thứ tự so sánh
- Kết quả là boolean: Luôn trả về
truehoặcfalse
🎓 Bạn Đã Học Được
- ✅ 6 toán tử so sánh:
==,!=,>,<,>=,<= - ✅ Kết quả luôn là
boolean(true/false) - ✅ Dùng
.equals()cho String - ✅ Phân biệt
=(gán) và==(so sánh) - ✅ Ứng dụng: Kiểm tra giá, độ tuổi, mã giảm giá
- ✅ Kết hợp với if-else để ra quyết định
☕ Món Tiếp Theo
Đã biết so sánh giá trị! Giờ học về toán tử logic:
👉 Toán Tử Logic - Logical Operators
💡 Lời Khuyên Cuối: So sánh giá trị như kiểm tra chất lượng trong quán - chính xác và rõ ràng sẽ giúp đưa ra quyết định đúng đắn!