Java Cơ Bản: Chuyển Đổi Kiểu Dữ Liệu, Toán Tử và Câu Lệnh Điều Khiển

Chuyển Đổi Kiểu Dữ Liệu

1. Chuyển đổi tự động (ẩn)

Khi gán giá trị từ kiểu dữ liệu có phạm vi nhỏ hơn sang kiểu lớn hơn, Java thực hiện chuyển đổi tự động mà không cần can thiệp.

Quy tắc: byte → short → int → long → float → double

Lưu ý đặc biệt: Trong biểu thức tính toán, các kiểu byte, short, char luôn được thăng cấp thành int trước khi xử lý.

public class DataTypeConversion {
    public static void main(String[] args) {
        long bigNumber = 50;        // int → long: OK
        double precise = 7.8F;      // float → double: OK
        float largeFloat = 100L;   // long → float: OK (float có phạm vi lớn hơn long về giá trị)
        
        System.out.println(largeFloat); // Xuất: 100.0
    }
}

2. Chuyển đổi ép kiểu (hiển)

Khi cần gán giá trị từ kiểu lớn sang kiểu nhỏ, phải dùng cú pháp ép kiểu. Tuy nhiên, điều này tiềm ẩn rủi ro mất mát độ chính xác hoặc tràn số.

Cú pháp: (kiểu_mới) biểu_thức

public class ExplicitCast {
    public static void main(String[] args) {
        int fromLong = (int) 2500000000L;  // Tràn số: kết quả không còn chính xác
        System.out.println(fromLong);       // Có thể in ra số âm do tràn
        
        int fromDouble = (int) 9.99;        // Mất phần thập phân, chỉ lấy phần nguyên
        System.out.println(fromDouble);     // In: 9

        byte a = 20, b = 30;
        int sum = a + b;                    // byte + byte → int
        System.out.println(sum);            // In: 50

        char ch = 'C';
        System.out.println(ch + 1);         // Ký tự được chuyển sang mã ASCII: 67 + 1 = 68
    }
}
  • Không nên lạm dụng ép kiểu – chỉ dùng khi chắc chắn giá trị nằm trong phạm vi.
  • boolean không thể chuyển đổi sang bất kỳ kiểu nào khác.

Toán Tử

1. Toán tử số học

  • ++: tăng 1
  • --: giảm 1
  • %: chia lấy dư

2. Toán tử quan hệ

So sánh hai giá trị: ==, !=, <, >, <=, >=. Kết quả trả về kiểu boolean.

3. Toán tử logic

Xử lý biểu thức boolean: && (AND), || (OR), ! (NOT).

4. Toán tử ba ngôi

Cấu trúc: điều_kiện ? giá_trị_nếu_true : giá_trị_nếu_false

int result = (5 > 3) ? 100 : 200; // result = 100

5. Bảng ký tự

  • ASCII: Mã hóa 128 ký tự cơ bản.
  • Unicode: Hỗ trợ đa ngôn ngữ, mở rộng từ ASCII.

Câu Lệnh Điều Khiển

1. Cấu trúc tuần tự

Các lệnh được thực thi lần lượt từ trên xuống dưới theo thứ tự viết trong code.

2. Câu lệnh rẽ nhánh

Dùng để kiểm tra điều kiện và thực thi khối lệnh tương ứng.

if (score >= 90) {
    grade = 'A';
} else if (score >= 80) {
    grade = 'B';
} else if (score >= 70) {
    grade = 'C';
} else {
    grade = 'D';
}

3. Câu lệnh lựa chọn (switch)

Thích hợp khi so sánh một biểu thức với nhiều hằng số.

switch (dayOfWeek) {
    case 1:
        System.out.println("Thứ Hai");
        break;
    case 2:
        System.out.println("Thứ Ba");
        break;
    default:
        System.out.println("Ngày không hợp lệ");
        break;
}

Lưu ý: Thiếu break sẽ gây hiện tượng "rơi xuyên" (fall-through) – tất cả các nhánh phía sau đều được thực thi cho đến khi gặp break hoặc kết thúc khối.

4. Câu lệnh lặp

Vòng lặp for:

for (int i = 0; i < 5; i++) {
    System.out.println("Lần lặp: " + i);
}

Vòng lặp while:

int count = 0;
while (count < 5) {
    System.out.println(count);
    count++;
}

Vòng lặp do-while:

int input;
do {
    System.out.print("Nhập số dương: ");
    input = scanner.nextInt();
} while (input <= 0);

Khác biệt: do-while luôn thực thi ít nhất một lần.

5. Từ khóa điều khiển

  • break: thoát khỏi vòng lặp hoặc khối switch.
  • continue: bỏ qua phần còn lại của vòng lặp hiện tại, chuyển sang lần lặp tiếp theo.

Mở rộng

Vòng lặp vô hạn: Vòng lặp không có điều kiện dừng, ví dụ: while(true).

Vòng lặp lồng nhau: Một vòng lặp nằm bên trong thân của vòng lặp khác. Tổng số lần lặp bằng tích số lần lặp của từng vòng.

for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 2; j++) {
        System.out.println("i=" + i + ", j=" + j);
    }
}

Thẻ: Java chuyển đổi kiểu dữ liệu toán tử câu lệnh điều khiển vòng lặp

Đăng vào ngày 4 tháng 8 lúc 08:11