No. Trình biên dịch sẽ thực hiện việc ghép nối tại thời gian biên dịch nếu tất cả các chuỗi của bạn không đổi (như chúng có trong câu hỏi của bạn). Vì vậy, kết quả là thực hiện tốt hơn so với phiên bản StringBuilder
.
Nó sẽ sử dụng StringBuilder
(hoặc StringBuffer
) để thực hiện kết nối của bất kỳ không liên tục các phần khác.
Vì vậy, các phiên bản biên dịch của:
String x = "a" + "b";
nên chính xác giống như:
String x = "ab";
Lưu ý rằng "không đổi" bộ phận có thể có nghĩa là đôi khi bạn có thể nhận được (rất nhỏ) hiệu quả thêm bằng cách sử dụng giá đỡ một cách khôn ngoan. Ví dụ:
int value = ...;
String x = "a" + value + "b" + "c";
... là kém hiệu quả hơn:
int value = ...;
String x = "a" + value + ("b" + "c");
... là người đầu tiên gắn "b"
và "c"
riêng. Phiên bản hiệu quả tương đương với:
int value = ...;
String x = "a" + value + "bc";
Tôi không thể nhớ bao giờ thấy điều này được sử dụng như một vi-tối ưu hóa hợp pháp, nhưng nó ít nhất một địa điểm ưa thích.
Nguồn
2013-04-25 16:19:05
Câu hỏi hay hơn là, tại sao bạn ghép nối nhiều dòng? – Makoto
@Makoto Bạn sẽ làm như thế nào? – javaguy
Vì bạn đang sử dụng nó với mục đích xây dựng các truy vấn SQL, tôi sẽ xem xét một API súc tích hơn để tạo ra, giống như [API tiêu chí] (http://docs.oracle.com/javaee/6/tutorial/ doc/gjitv.html). – Makoto