2009-08-18 39 views

Trả lời

40

Nó tạo ra tương đương với:

String s = new StringBuilder("abc") 
      .append(methodReturningAString()) 
      .append("ghi") 
      .append(anotherMethodReturningAString()) 
      .append("omn") 
      .append("blablabla") 
      .toString(); 

Nó đủ thông minh để pre-nối chuỗi tĩnh (ví dụ: các "omn" + "blablabla"). Bạn có thể gọi việc sử dụng StringBuilder "mẹo hiệu suất" nếu bạn muốn. Nó chắc chắn là tốt hơn cho hiệu suất hơn làm năm concatenations dẫn đến bốn chuỗi tạm thời không cần thiết. Ngoài ra, việc sử dụng StringBuilder là một cải tiến hiệu suất trong (tôi nghĩ) Java 5; trước đó, StringBuffer đã được sử dụng.

Chỉnh sửa: như được chỉ ra trong các nhận xét, các chuỗi tĩnh chỉ được nối trước nếu chúng ở đầu phần nối. Làm cách khác sẽ phá vỡ trật tự hoạt động (mặc dù trong trường hợp này tôi nghĩ rằng Sun có thể biện minh cho nó). Vì vậy, cho này:

String s = "abc" + "def" + foo() + "uvw" + "xyz"; 

nó sẽ được biên dịch như thế này:

String s = new StringBuilder("abcdef") 
      .append(foo()) 
      .append("uvw") 
      .append("xyz") 
      .toString(); 
+0

+1. Tôi đã nhìn thấy StringBuilder và tất cả được thiết lập để gửi bài làm rõ cho đến khi tôi đến đáy và thấy rằng bạn đã quan tâm đến nó. –

+0

vâng, tôi không thể nhớ cái nào là chính xác, phải tìm kiếm nó sau khi sửa đổi ban đầu của tôi – Kip

+0

Thực ra, tôi đã đề cập đến việc nối chuỗi ký tự chuỗi. Thoạt nhìn, tôi nghĩ bạn đã sử dụng '.append' cho mỗi chuỗi. –

Các vấn đề liên quan