Java:
Nối chuỗi ký tự
Làm thế nào:
Dưới đây là cách nối chuỗi trong Java:
public class StringConcatenationDemo {
public static void main(String[] args) {
String firstName = "John";
String lastName = "Doe";
// Sử dụng toán tử cộng
String fullName = firstName + " " + lastName;
System.out.println(fullName); // Kết quả: John Doe
// Sử dụng phương thức concat()
String anotherFullName = firstName.concat(" ").concat(lastName);
System.out.println(anotherFullName); // Kết quả: John Doe
// Sử dụng StringBuilder cho nhiều phép nối
StringBuilder builder = new StringBuilder();
builder.append(firstName).append(" ").append(lastName);
System.out.println(builder.toString()); // Kết quả: John Doe
}
}
Tìm hiểu sâu
Việc nối chuỗi có vẻ đơn giản, phải không? Nó đã có mặt trong Java từ những ngày đầu, và chúng ta có một vài cách để thực hiện. Các phiên bản Java sớm sử dụng StringBuilder
ngầm định mỗi khi bạn thực hiện phép cộng +
. Sau đó, Java 5 ra đời, và mọi thứ trở nên hiệu quả hơn với sự giới thiệu của StringJoiner
và nhiều cải tiến cho lớp StringBuilder
.
Bây giờ, bạn có thể tự hỏi tại sao không luôn sử dụng toán tử +
nếu nó giống nhau? Hóa ra, +
rất tốt cho một công việc nhanh chóng với những chuỗi nhỏ hoặc một vài phép nối. Tuy nhiên, đằng sau hậu trường, nó có thể trở nên tốn kém về hiệu suất nếu bạn sử dụng nó trong một vòng lặp với nhiều lần lặp lại vì nó tạo ra các đối tượng tạm thời trước khi đạt được phiên bản chuỗi cuối cùng.
Trong những trường hợp nặng nề đó, StringBuilder
hoặc StringBuffer
sẽ ra đời. StringBuilder
thường nhanh hơn vì nó không được đồng bộ hóa—khiến nó không an toàn với luồng nhưng nhanh chóng. StringBuffer
là lựa chọn cũ hơn, an toàn với luồng. Nó chậm hơn do gánh nặng đồng bộ hóa. Chọn dựa trên nhu cầu về sự an toàn của luồng của bạn.
Đối với phương thức concat()
, nó khá đơn giản nhưng không linh hoạt bằng StringBuilder
. Bạn muốn lặp và tiếp tục thêm nhiều chuỗi? concat()
ít tiện lợi hơn.
Tính đến Java 8 trở đi, chúng ta cũng có String.join()
, rất gọn cho việc kết nối các bộ sưu tập chuỗi với một dấu phân cách.