VieTopik
Tiếng HànTiếng Anh.NET (C#)Java
  • Góc học tập
Tải app
  • Thư viện
  • Luyện thi
  • Cẩm nang
  • Góc học tập
Java CoreBắt đầu
Bài 3/19
5 phút

Toán tử và ép kiểu

Nội dung bài · 6 mục
  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Ép kiểu
  4. 4.Thử ngay
  5. 5.Lỗi hay gặp
  6. 6.Tóm tắt

Tính tổng tiền, so sánh tồn kho, đổi chuỗi người dùng nhập thành số: việc nào cũng cần toán tử và ép kiểu. Bài này gom những toán tử dùng hằng ngày, kèm hai cái bẫy mà người mới hay rơi vào.

Khái niệm

🧮 Toán tử (operator): ký hiệu thực hiện một phép tính trên giá trị, như +, >, &&.

🔄 Ép kiểu (casting): chuyển một giá trị từ kiểu này sang kiểu khác, như từ double sang int.

Ví dụ

void main() {
    int quantity = 7;
    long price = 5000;

    long total = price * quantity;      // 35000
    boolean bigOrder = total > 30000;   // true
    boolean freeShip = bigOrder && quantity >= 5;

    System.out.println(total);
    System.out.println(freeShip);
}

Các toán tử hay dùng:

Nhóm Toán tử Ý nghĩa
Số học + - * / % cộng, trừ, nhân, chia, chia lấy dư
So sánh == != > < >= <= kết quả là boolean
Logic && || ! và, hoặc, phủ định
  • % cho phần dư: 7 % 2 bằng 1.
  • == là so sánh, = là gán. Hai dấu này khác nhau hoàn toàn.
  • + với chuỗi là nối chuỗi: "Tổng: " + total.

Ép kiểu

Khi không mất dữ liệu, Java tự chuyển kiểu, ví dụ từ int sang double. Khi có thể mất dữ liệu, bạn phải ghi rõ kiểu đích trong ngoặc:

void main() {
    double rating = 4.8;
    int stars = (int) rating;    // 4, phần lẻ bị cắt

    String input = "12";
    int quantity = Integer.parseInt(input);
}
  • (int) cắt bỏ phần lẻ, không làm tròn.
  • Chuỗi thì không ép bằng ngoặc được, phải dùng Integer.parseInt, Long.parseLong.

Thử ngay

Dán vào Main.java rồi chạy java Main.java:

void main() {
    System.out.println(7 / 2);
    System.out.println(7 / 2.0);
    System.out.println(7 % 2);
    System.out.println((int) 3.9);
}

Đoán trước khi chạy: dòng đầu in ra 3.5 hay số khác?

Xem kết quả
3
3.5
1
3

7 / 2 là phép chia hai số nguyên nên kết quả cũng là số nguyên, phần lẻ bị bỏ. Chỉ cần một vế là số thực (2.0) thì kết quả mới là 3.5.

Lỗi hay gặp

Chia nguyên ngoài ý muốn. Tính trung bình mà cả hai vế đều là int.

// SAI — ra 3.0 chứ không phải 3.5
void main() {
    int totalStars = 7;
    int reviews = 2;
    double average = totalStars / reviews;
}
// ĐÚNG — ép một vế sang double trước khi chia
void main() {
    int totalStars = 7;
    int reviews = 2;
    double average = (double) totalStars / reviews;
}

Nối chuỗi với phép cộng. Java đọc từ trái sang phải. Gặp chuỗi trước thì mọi dấu + phía sau đều thành nối chuỗi.

// SAI — in ra "Tổng: 12"
void main() {
    System.out.println("Tổng: " + 1 + 2);
}
// ĐÚNG — in ra "Tổng: 3"
void main() {
    System.out.println("Tổng: " + (1 + 2));
}

Tóm tắt

  • / giữa hai số nguyên cho số nguyên. Cần phần lẻ thì ép một vế sang double.
  • == để so sánh, = để gán.
  • (int) cắt phần lẻ, không làm tròn.
  • Chuỗi sang số dùng Integer.parseInt, Long.parseLong.

Tự kiểm tra

0/3 câu
Câu 1

int boxes = 10; int perBox = 4; System.out.println(boxes / perBox); In ra gì?

Câu 2

Người dùng nhập "25" vào biến String input. Cách nào đổi nó thành số int?

Câu 3

Biểu thức nào đúng khi đơn hàng trên 500000 VÀ khách là thành viên?

Biến và kiểu dữ liệuif/else và switch

Nội dung bài

  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Ép kiểu
  4. 4.Thử ngay
  5. 5.Lỗi hay gặp
  6. 6.Tóm tắt