- Mở Rộng Kiểu Số Nguyên Trong lập trình, chúng ta thường làm việc với nhiều hệ thống đếm khác nhau. Máy tính sử dụng hệ nhị phân, trong khi cuộc sống hàng ngày dùng thập phân. Trong lập trình Java, chúng ta cũng gặp hệ bát phân và thập lục phân.
Hệ nhị phân: bắt đầu bằng tiền tố 0b Hệ thập phân: các số thông thường Hệ bát phân: bắt đầu bằng chữ số 0 Hệ thập lục phân: bắt đầu bằng tiền tố 0x
Ví dụ, số 10 trong hệ bát phân tương đương 8 trong thập phân, và số 10 trong hệ thập lục phân tương đương 16 trong thập phân.
public class HeSoDem {
public static void main(String[] args) {
// Khai báo các số với hệ đếm khác nhau
int soThapPhan = 26;
int soBatPhan = 032; // Hệ bát phân: bắt đầu bằng 0
int soThapLucPhan = 0x1A; // Hệ thập lục phân: bắt đầu bằng 0x
// In ra các giá trị
System.out.println("Số thập phân: " + soThapPhan);
System.out.println("Số bát phân: " + soBatPhan);
System.out.println("Số thập lục phân: " + soThapLucPhan);
}
}
- Mở Rộng Kiểu Số Thực Khi làm việc với số thực (float, double), đặc biệt trong các ứng dụng tài chính, chúng ta cần lưu ý về độ chính xác. Các kiểu số thực này có thể gây ra sai số làm tròn vì chúng chỉ biểu diễn được các giá trị rời rạc hữu hạn. Vấn đề đặc biệt nghiêm trọng trong lĩnh vực ngân hàng, nơi yêu cầu độ chính xác tuyệt đối. Giải pháp là sử dụng lớp BigDecimal từ thư viện Java, được thiết kế để thực hiện các phép toán số học chính xác. Luôn tránh so sánh trực tiếp các giá trị số thực vì sai số làm tròn có thể dẫn đến kết quả không mong muốn.
import java.math.BigDecimal;
public class SoThuc {
public static void main(String[] args) {
// Khai báo các biến số thực
float giaTriFloat = 0.1f;
double giaTriDouble = 1.0 / 10;
// So sánh - có thể cho kết quả không như mong đợi
System.out.println("float == double? " + (giaTriFloat == giaTriDouble));
// Ví dụ về sai số làm tròn
long soLon = 2313131313131313131L;
float soFloat = (float) soLon;
float soFloatTang = soFloat + 1;
System.out.println("Số lớn: " + soLon);
System.out.println("Float: " + soFloat);
System.out.println("Float + 1: " + soFloatTang);
System.out.println("Bằng nhau? " + (soFloat == soFloatTang));
// Sử dụng BigDecimal cho tính toán chính xác
BigDecimal so1 = new BigDecimal("10.5");
BigDecimal so2 = new BigDecimal("3.2");
BigDecimal ketQua = so1.divide(so2, 4, BigDecimal.ROUND_HALF_UP);
System.out.println("Kết quả chính xác: " + ketQua);
}
}
- Mở Rộng Kiểu Ký Tự 3.1. Chuyển đổi ký tự thành số Trong Java, ký tự thực chất được biểu diễn bằng số thông qua bảng mã Unicode. Mỗi ký tự chiếm 2 byte và có thể biểu diễn từ 0 đến 65,535 ký tự khác nhau. Chúng ta có thể ép kiểu ký tự sang số để xem giá trị Unicode tương ứng.
public class KyTu {
public static void main(String[] args) {
// Khai báo các ký tự
char kyTuThuong = 'a';
char kyTuHoa = 'A';
char kyTuViet = 'Việt';
// In ký tự và giá trị Unicode tương ứng
System.out.println("Ký tự: " + kyTuThuong + ", Unicode: " + (int) kyTuThuong);
System.out.println("Ký tự: " + kyTuHoa + ", Unicode: " + (int) kyTuHoa);
System.out.println("Ký tự: " + kyTuViet + ", Unicode: " + (int) kyTuViet);
// Sử dụng ký tự Unicode trực tiếp
char kyTuUnicode = '\u0041'; // Tương đương 'A'
System.out.println("Ký tự từ Unicode: " + kyTuUnicode);
}
}
3.2. Ký tự thoát (Escape Characters) Những ký tự đặc biệt giúp điều khiển định dạng văn bản:
\t: Dấu tab \n: Xuống dòng \r: Quay đầu dòng \b: Xóa ký tự trước đó
public class KyTuThoat {
public static void main(String[] args) {
// Sử dụng các ký tự thoát
System.out.println("Hello\tWorld"); // Thêm tab
System.out.println("Hello\nWorld"); // Xuống dòng
System.out.println("Hello\rWorld"); // Quay đầu dòng
// So sánh đối tượng String
String chuoi1 = new String("xin chào");
String chuoi2 = new String("xin chào");
System.out.println("So sánh đối tượng: " + (chuoi1 == chuoi2));
String chuoi3 = "xin chào";
String chuoi4 = "xin chào";
System.out.println("So sánh chuỗi hằng: " + (chuoi3 == chuoi4));
}
}
- Mở Rộng Kiểu Boolean Kiểu boolean chỉ có hai giá trị: true (đúng) và false(sai). Thường được sử dụng trong các câu lệnh điều kiện. Trong thực tế lập trình, khi kiểm tra điều kiện, chúng ta có thể viết ngắn gọn hơn bằng cách chỉ sử dụng biến boolean thay vì so sánh với true.
public class KieuBoolean {
public static void main(String[] args) {
// Khai báo biến boolean
dieuKien = true;
// Cách viết dài
if (dieuKien == true) {
System.out.println("Điều kiện đúng");
}
// Cách viết ngắn gọn hơn
if (dieuKien) {
System.out.println("Điều kiện đúng (viết ngắn gọn)");
}
// Ví dụ thực tế
boolean duocPhep = kiemTraQuyen();
if (duocPhep) {
thucHienChucNang();
}
}
// Các phương thức giả định
static boolean kiemTraQuyen() {
return true;
}
static void thucHienChucNang() {
System.out.println("Thực hiện chức năng");
}
}