2015-10-14 23 views

Trả lời

9

Sử dụng bất kỳ phương pháp nào dễ đọc hơn. String.valueOf(i) hoặc Integer.toString(i) làm cho ý định của bạn rõ ràng hơn i + "".

+1

'String.valueOf' có hiệu quả hơn' i + "" 'không? – Sayakiss

+0

@Sayakiss Không nên có một hiệu suất khác biệt khôn ngoan (trong bất kỳ trình biên dịch phong nha). Bạn chỉ nên lo lắng về khả năng đọc. – Eran

13

Mặc dù nó hoạt động, i + "" là loại hack để chuyển đổi int thành chuỗi. Toán tử + trên chuỗi không bao giờ được thiết kế để sử dụng theo cách đó. Luôn sử dụng String.valueOf()

+1

Câu trả lời hay. Ngoài ra, tôi nghĩ String.valueOf() là sạch hơn. – A1ternat1ve

+0

Nếu toán tử '+' không được thiết kế để sử dụng theo cách đó, bạn sẽ không thể làm những việc như 'System.out.println (" i = "+ i)'. Điều đó sẽ giống như lập trình trong Modula 2 một lần nữa. –

+0

@ ThorbjørnRavnAndersen Đồng ý, nhưng một lần nữa bạn được tự do làm điều đó và nó hoạt động hoàn toàn. Nhưng tôi chỉ nói rằng đó là loại lạm dụng nó vì lợi ích. Chỉ cần đề xuất một cách sạch hơn :) –

3

Nó không chỉ là tối ưu hóa. Tôi không thích

"" + i 

vì nó không thể hiện những gì tôi thực sự muốn làm.

Tôi không muốn nối thêm số nguyên vào chuỗi (trống). Tôi muốn chuyển đổi một số nguyên để chuỗi:

Integer.toString(i) 

Hoặc, không ưa thích của tôi, nhưng vẫn tốt hơn là nối, có được một chuỗi đại diện của một đối tượng (số nguyên

String.valueOf(i) 

NB: Đối với mã mà được gọi là rất thường xuyên, giống như trong vòng lặp, tối ưu hóa chắc chắn cũng là một điểm không sử dụng nối.

3

Điều đó là nếu bạn có Integer i (không nguyên thủy) và sử dụng i + "", yo u có thể kết thúc với một chuỗi không null là "null" giá trị nếu i là null, trong khi String.valueOf(...) sẽ ném NullPointerException trong trường hợp này.

Trong tất cả các trường hợp khác, nó giống nhau (cũng rất giống với quy trình nội bộ sẽ được gọi để trả lại kết quả). Với những gì ở trên, tất cả phụ thuộc vào ngữ cảnh mà bạn sử dụng nó cho, e.x. nếu bạn dự định chuyển đổi chuỗi trở lại thành int/Integer trường hợp +, có thể có vấn đề hơn.

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