Định dạng xuất dữ liệu (printf/String.format)
1. System.out.printf
Phần tiêu đề “1. System.out.printf”printf cho phép in dữ liệu theo một định dạng (format string) với các placeholder, tương tự printf trong C:
String name = "An";int age = 20;double gpa = 8.75;
System.out.printf("Tên: %s, Tuổi: %d, GPA: %.2f%n", name, age, gpa);// Tên: An, Tuổi: 20, GPA: 8.752. Các format specifier phổ biến
Phần tiêu đề “2. Các format specifier phổ biến”| Specifier | Ý nghĩa |
|---|---|
%d |
số nguyên (int, long) |
%f |
số thực (float, double) |
%.2f |
số thực, làm tròn 2 chữ số thập phân |
%s |
chuỗi (String) - thực ra dùng được cho hầu hết mọi kiểu (gọi toString()) |
%c |
ký tự (char) |
%b |
boolean |
%n |
xuống dòng (nên dùng thay cho \n - %n tự chọn ký tự xuống dòng đúng theo hệ điều hành) |
%% |
in ký tự % |
3. Căn lề và độ rộng cột
Phần tiêu đề “3. Căn lề và độ rộng cột”Thêm một số trước ký tự định dạng để chỉ định độ rộng tối thiểu; thêm dấu - để căn trái:
System.out.printf("%10s|%n", "abc"); // " abc|" - căn phải, rộng 10 ký tựSystem.out.printf("%-10s|%n", "abc"); // "abc |" - căn trái, rộng 10 ký tựSystem.out.printf("%5d|%n", 42); // " 42|"System.out.printf("%05d|%n", 42); // "00042|" - đệm số 0Thường dùng để in bảng dữ liệu thẳng hàng:
System.out.printf("%-10s%5s%n", "Tên", "Điểm");System.out.printf("%-10s%5.1f%n", "An", 8.5);System.out.printf("%-10s%5.1f%n", "Binh", 7.25);4. String.format - lấy chuỗi đã định dạng thay vì in luôn
Phần tiêu đề “4. String.format - lấy chuỗi đã định dạng thay vì in luôn”String.format dùng cú pháp giống hệt printf, nhưng trả về một String thay vì in ra màn hình - hữu ích khi cần lưu lại chuỗi hoặc ghép vào thông báo khác:
String message = String.format("Xin chào %s, bạn %d tuổi.", "An", 20);System.out.println(message); // Xin chào An, bạn 20 tuổi.5. Text block (Java 15+) - chuỗi nhiều dòng
Phần tiêu đề “5. Text block (Java 15+) - chuỗi nhiều dòng”Với chuỗi văn bản dài, nhiều dòng, Java 15 trở lên hỗ trợ text block bằng ba dấu ngoặc kép """:
String html = """ <html> <body> <p>Xin chào!</p> </body> </html> """;System.out.println(html);Text block giữ nguyên định dạng xuống dòng, không cần nối chuỗi + hay \n thủ công - rất tiện cho JSON mẫu, câu SQL, đoạn HTML ngắn…
Tổng kết
Phần tiêu đề “Tổng kết”printf/String.formatđịnh dạng dữ liệu xuất theo format specifier (%d,%f,%s,…)- Thêm số trước specifier để chỉ định độ rộng, dấu
-để căn trái String.formattrả vềStringthay vì in trực tiếp- Text block (
""") từ Java 15 giúp viết chuỗi nhiều dòng gọn và dễ đọc hơn