Chuyển tới nội dung chính

⚖️ 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ĩaVí Dụ CaféKết Quả
==Bằng nhau50000 == 50000true
!=Khác nhau50000 != 45000true
>Lớn hơn60000 > 50000true
<Nhỏ hơn45000 < 50000true
>=Lớn hơn hoặc bằng50000 >= 50000true
<=Nhỏ hơn hoặc bằng45000 <= 50000true

👨‍🍳 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

  1. Dùng .equals() cho String: Không dùng == để so sánh String
  2. Phân biệt = và ==: = là gán, == là so sánh
  3. Cẩn thận với float/double: Dùng epsilon khi so sánh
  4. Dùng dấu ngoặc: Làm rõ thứ tự so sánh
  5. Kết quả là boolean: Luôn trả về true hoặc false

🎓 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!