✍️ Gán Giá Trị - Assignment Operators
Chào mừng đến với bài học về Assignment Operators - cách gán và cập nhật giá trị trong Café!
🎯 Món Ăn Hôm Nay
Tưởng tượng bạn đang quản lý kho quán:
- Gán giá mới cho đồ uống →
gia = 50000 - Cộng thêm 5 ly vào kho →
kho += 5 - Giảm 10% giá →
gia *= 0.9
Đó chính là Assignment Operators - gán và cập nhật nhanh!
✍️ Assignment Operators Là Gì?
Assignment Operators = Phép gán (gán giá trị cho biến)
Toán tử cơ bản: =
int gia = 50000; // Gán 50000 cho gia
Compound Assignment = Gán kết hợp (gán + tính toán)
int kho = 10;
kho += 5; // kho = kho + 5 → 15
kho -= 3; // kho = kho - 3 → 12
kho *= 2; // kho = kho * 2 → 24
☕ Ẩn Dụ Café:
- = = Gán giá trị mới
- += = Cộng thêm vào kho
- -= = Trừ bớt từ kho
- *= = Nhân (tăng gấp đôi)
- /= = Chia (giảm một nửa)
- %= = Chia lấy dư
📊 Bảng Assignment Operators
| Toán Tử | Ví Dụ | Tương Đương | Ví Dụ Café |
|---|---|---|---|
= | a = 5 | a = 5 | Gán giá 5 |
+= | a += 3 | a = a + 3 | Cộng thêm 3 |
-= | a -= 2 | a = a - 2 | Trừ đi 2 |
*= | a *= 2 | a = a * 2 | Nhân đôi |
/= | a /= 2 | a = a / 2 | Chia đôi |
%= | a %= 3 | a = a % 3 | Lấy dư |
👨🍳 Câu Chuyện Trong Quán
Tình huống 1: Cập Nhật Kho Hàng
public class QuanLyKho {
public static void main(String[] args) {
int soBotCaPhe = 50; // kg
System.out.println("📦 KHO BAN ĐẦU: " + soBotCaPhe + " kg\n");
// Nhập thêm hàng
soBotCaPhe += 20; // Nhập thêm 20kg
System.out.println("➕ Nhập thêm 20kg");
System.out.println(" Hiện tại: " + soBotCaPhe + " kg\n");
// Sử dụng
soBotCaPhe -= 15; // Dùng 15kg
System.out.println("➖ Sử dụng 15kg");
System.out.println(" Còn lại: " + soBotCaPhe + " kg");
}
}
Output:
📦 KHO BAN ĐẦU: 50 kg
➕ Nhập thêm 20kg
Hiện tại: 70 kg
➖ Sử dụng 15kg
Còn lại: 55 kg
Tình huống 2: Điều Chỉnh Giá
public class DieuChinhGia {
public static void main(String[] args) {
int giaLatte = 50000;
System.out.println("💰 GIÁ BAN ĐẦU: " + giaLatte + " VND\n");
// Giảm giá 20%
giaLatte *= 0.8; // giaLatte = giaLatte * 0.8
System.out.println("🎉 GIẢM GIÁ 20%");
System.out.println(" Giá mới: " + giaLatte + " VND");
}
}
📝 Công Thức Nấu (Code Examples)
Ví Dụ 1: Toán Tử += (Cộng Gán)
public class CongGan {
public static void main(String[] args) {
int doanhThu = 100000;
System.out.println("💵 DOANH THU:\n");
System.out.println("Ban đầu: " + doanhThu + " VND");
// Khách 1: 50,000 VND
doanhThu += 50000;
System.out.println("+ Khách 1: " + doanhThu + " VND");
// Khách 2: 30,000 VND
doanhThu += 30000;
System.out.println("+ Khách 2: " + doanhThu + " VND");
// Khách 3: 70,000 VND
doanhThu += 70000;
System.out.println("+ Khách 3: " + doanhThu + " VND");
System.out.println("\n🏆 TỔNG: " + doanhThu + " VND");
}
}
Output:
💵 DOANH THU:
Ban đầu: 100000 VND
+ Khách 1: 150000 VND
+ Khách 2: 180000 VND
+ Khách 3: 250000 VND
🏆 TỔNG: 250000 VND
Ví Dụ 2: Toán Tử -= (Trừ Gán)
public class TruGan {
public static void main(String[] args) {
int soLyCon = 100;
System.out.println("🥤 QUẢN LÝ LY:\n");
System.out.println("Ban đầu: " + soLyCon + " ly");
// Buổi sáng: dùng 20 ly
soLyCon -= 20;
System.out.println("Sau buổi sáng: " + soLyCon + " ly");
// Buổi chiều: dùng 35 ly
soLyCon -= 35;
System.out.println("Sau buổi chiều: " + soLyCon + " ly");
// Kiểm tra
if (soLyCon < 20) {
System.out.println("\n⚠️ Sắp hết ly! Cần mua thêm.");
}
}
}
Output:
🥤 QUẢN LÝ LY:
Ban đầu: 100 ly
Sau buổi sáng: 80 ly
Sau buổi chiều: 45 ly
Ví Dụ 3: Toán Tử *= (Nhân Gán)
public class NhanGan {
public static void main(String[] args) {
int gia = 50000;
System.out.println("💰 ĐIỀU CHỈNH GIÁ:\n");
System.out.println("Giá gốc: " + gia + " VND");
// Giờ cao điểm: tăng 20% (x1.2)
gia *= 1.2;
System.out.println("Cao điểm (+20%): " + gia + " VND");
// Black Friday: giảm 50% (x0.5)
gia *= 0.5;
System.out.println("Black Friday (-50%): " + gia + " VND");
}
}
Output:
💰 ĐIỀU CHỈNH GIÁ:
Giá gốc: 50000 VND
Cao điểm (+20%): 60000 VND
Black Friday (-50%): 30000 VND
Ví Dụ 4: Toán Tử /= (Chia Gán)
public class ChiaGan {
public static void main(String[] args) {
int tongTien = 200000;
int soNguoi = 4;
System.out.println("💵 CHIA ĐỀU HÓA ĐƠN:\n");
System.out.println("Tổng tiền: " + tongTien + " VND");
System.out.println("Số người: " + soNguoi);
// Chia đều
tongTien /= soNguoi; // tongTien = tongTien / soNguoi
System.out.println("\nMỗi người: " + tongTien + " VND");
}
}
Output:
💵 CHIA ĐỀU HÓA ĐƠN:
Tổng tiền: 200000 VND
Số người: 4
Mỗi người: 50000 VND
Ví Dụ 5: Toán Tử %= (Chia Lấy Dư Gán)
public class ChiaLayDuGan {
public static void main(String[] args) {
int tongLy = 27;
int lyMoiKhay = 10;
System.out.println("🧊 SẮP XẾP LY VÀO KHAY:\n");
System.out.println("Tổng ly: " + tongLy);
System.out.println("Ly mỗi khay: " + lyMoiKhay);
int soKhayDay = tongLy / lyMoiKhay;
tongLy %= lyMoiKhay; // tongLy = tongLy % lyMoiKhay
System.out.println("\nKhay đầy: " + soKhayDay);
System.out.println("Ly còn lại: " + tongLy);
}
}
Output:
🧊 SẮP XẾP LY VÀO KHAY:
Tổng ly: 27
Ly mỗi khay: 10
Khay đầy: 2
Ly còn lại: 7
Ví Dụ 6: Kết Hợp Nhiều Toán Tử
public class QuanLyTienMat {
public static void main(String[] args) {
int tienTrongQuat = 500000;
System.out.println("💰 QUẢN LÝ TIỀN MẶT:\n");
System.out.println("Ban đầu: " + tienTrongQuat + " VND\n");
// Thu tiền từ khách
tienTrongQuat += 150000;
System.out.println("+ Thu khách: " + tienTrongQuat + " VND");
// Trả tiền nhập hàng
tienTrongQuat -= 80000;
System.out.println("- Nhập hàng: " + tienTrongQuat + " VND");
// Nộp ngân hàng (50%)
int nopNganHang = tienTrongQuat / 2;
tienTrongQuat -= nopNganHang;
System.out.println("- Nộp NH: " + tienTrongQuat + " VND");
System.out.println("\n📊 TỔNG KẾT:");
System.out.println("Trong quầy: " + tienTrongQuat + " VND");
System.out.println("Đã nộp: " + nopNganHang + " VND");
}
}
Output:
💰 QUẢN LÝ TIỀN MẶT:
Ban đầu: 500000 VND
+ Thu khách: 650000 VND
- Nhập hàng: 570000 VND
- Nộp NH: 285000 VND
📊 TỔNG KẾT:
Trong quầy: 285000 VND
Đã nộp: 285000 VND
🔥 Thực Hành Trong Quán
Bài Tập 1: Hệ Thống Tích Điểm
public class HeTho ngTichDiem {
public static void main(String[] args) {
int diem = 100;
System.out.println("⭐ HỆ THỐNG TÍCH ĐIỂM:\n");
System.out.println("Điểm hiện tại: " + diem);
// Mua hàng: +50 điểm
diem += 50;
System.out.println("+ Mua hàng 100k: " + diem + " điểm");
// Giới thiệu bạn: x2 điểm
diem *= 2;
System.out.println("× Giới thiệu bạn: " + diem + " điểm");
// Đổi quà: -200 điểm
diem -= 200;
System.out.println("- Đổi quà: " + diem + " điểm");
System.out.println("\n🎁 Điểm còn lại: " + diem);
}
}
Bài Tập 2: Quản Lý Nguyên Liệu
public class QuanLyNguyenLieu {
public static void main(String[] args) {
int suaTuoi = 10000; // ml
System.out.println("🥛 QUẢN LÝ SỮA TƯƠI:\n");
System.out.println("Kho: " + suaTuoi + " ml\n");
// Pha 5 ly Latte (mỗi ly 200ml)
int suaCanDung = 5 * 200;
suaTuoi -= suaCanDung;
System.out.println("Pha 5 Latte (-" + suaCanDung + " ml)");
System.out.println("Còn: " + suaTuoi + " ml\n");
// Nhập thêm 5 lít = 5000ml
suaTuoi += 5000;
System.out.println("Nhập thêm 5 lít (+5000 ml)");
System.out.println("Còn: " + suaTuoi + " ml\n");
// Kiểm tra cảnh báo
if (suaTuoi < 2000) {
System.out.println("⚠️ Sắp hết sữa!");
} else {
System.out.println("✅ Sữa đủ dùng");
}
}
}
Bài Tập 3: Tính Tiền Tip
public class TinhTip {
public static void main(String[] args) {
int tongHoaDon = 250000;
int tip = 0;
System.out.println("💵 TÍNH TIỀN TIP:\n");
System.out.println("Hóa đơn: " + tongHoaDon + " VND\n");
// Tip 10%
tip = tongHoaDon / 10; // Hoặc: tongHoaDon * 10 / 100
System.out.println("Tip (10%): " + tip + " VND");
// Tổng thanh toán
int tongThanhToan = tongHoaDon;
tongThanhToan += tip;
System.out.println("Tổng cộng: " + tongThanhToan + " VND");
}
}
Bài Tập 4: Chia Thưởng Nhân Viên
public class ChiaThuong {
public static void main(String[] args) {
int tongThuong = 3000000;
int soNhanVien = 4;
System.out.println("🎁 CHIA THƯỞNG NHÂN VIÊN:\n");
System.out.println("Tổng thưởng: " + tongThuong + " VND");
System.out.println("Số nhân viên: " + soNhanVien + "\n");
// Chia đều
int thuongMoiNguoi = tongThuong / soNhanVien;
int duThua = tongThuong % soNhanVien;
System.out.println("Mỗi người: " + thuongMoiNguoi + " VND");
System.out.println("Dư thừa: " + duThua + " VND");
if (duThua > 0) {
System.out.println("\n💡 Dùng " + duThua + " VND mua đồ chung!");
}
}
}
⚠️ Lỗi Thường Gặp
Lỗi 1: Nhầm == Với =
// ❌ SAI: Dùng = (gán) thay vì == (so sánh)
int gia = 50000;
if (gia = 60000) { // ❌ Lỗi! Đây là gán, không phải so sánh
System.out.println("Đắt");
}
// ✅ ĐÚNG: Dùng ==
if (gia == 60000) { // ✅ So sánh
System.out.println("Đắt");
}
Lỗi 2: Chia Số Nguyên
// ❌ SAI: Chia số nguyên mất phần thập phân
int tong = 100;
int chia = 3;
int ketQua = tong / chia; // 33, mất phần dư!
// ✅ ĐÚNG: Chuyển sang double
double ketQua = (double) tong / chia; // 33.333...
Lỗi 3: Overflow Khi Nhân
// ❌ SAI: Overflow
int gia = 1000000;
gia *= 5000; // Vượt quá giới hạn int!
// ✅ ĐÚNG: Dùng long
long gia = 1000000;
gia *= 5000; // OK
Lỗi 4: Quên Kiểu Dữ Liệu
// ❌ SAI: Mất phần thập phân
int gia = 50000;
gia *= 0.9; // ❌ Lỗi! 0.9 là double, gán vào int
// ✅ ĐÚNG: Ép kiểu
gia = (int) (gia * 0.9); // OK, ép về int
💡 Bí Quyết Của Barista
- Dùng compound assignment:
a += 5ngắn gọn hơna = a + 5 - Phân biệt = và ==:
=là gán,==là so sánh - Cẩn thận với chia: Chia số nguyên mất phần dư
- Kiểm tra overflow: Dùng long cho số lớn
- Ép kiểu đúng: Ép kiểu khi cần thiết
🎓 Bạn Đã Học Được
- ✅ Toán tử gán cơ bản:
= - ✅ Compound assignment:
+=,-=,*=,/=,%= - ✅
+== Cộng thêm vào biến - ✅
-== Trừ bớt từ biến - ✅
*== Nhân biến - ✅
/== Chia biến - ✅
%== Lấy phần dư gán lại
☕ Món Tiếp Theo
Đã biết gán và cập nhật giá trị! Giờ học về mảng đơn:
👉 Mảng Đơn - Single Dimensional Arrays
💡 Lời Khuyên Cuối: Assignment operators như ghi chép trong quán - ghi ngắn gọn nhưng đầy đủ thông tin!