Quy tắc đơn giản đầu tiên: không bao giờ sử dụng công cụ xây dựng String(String)
, nó hoàn toàn vô dụng (*).
Vì vậy, arr.add("ss")
là tốt.
Với 3
hơi khác: 3
là một chữ cái int
, không phải là đối tượng. Chỉ các đối tượng mới có thể được đưa vào List
. Vì vậy, int
sẽ cần được chuyển đổi thành đối tượng Integer
.Trong hầu hết các trường hợp sẽ được thực hiện tự động cho bạn (quá trình đó được gọi là autoboxing). Nó hiệu quả cũng giống như Integer.valueOf(3)
mà có thể (và sẽ) tránh tạo một trường hợp Integer
mới trong một số trường hợp.
Vì vậy, thực sự viết arr.add(3)
là thường một ý tưởng tốt hơn so với sử dụng arr.add(new Integer(3))
, bởi vì nó có thể tránh việc tạo ra một đối tượng mới Integer
và thay vào đó tái sử dụng và hiện có một.
Tuyên bố từ chối: Tôi đang tập trung vào sự khác biệt giữa khối mã thứ hai và thứ ba ở đây và bỏ qua phần generics khá nhiều. Để biết thêm thông tin về generics, xin vui lòng kiểm tra các câu trả lời khác.
(*) có một số trường hợp góc che khuất nơi nó là hữu ích, nhưng một khi bạn tiếp cận những người bạn sẽ biết không bao giờ lấy lời khai tuyệt đối như tuyệt đối ;-)
Nguồn
2012-05-29 10:13:30
Để xây dựng trên điểm cuối cùng của @ Thilo, nhiều nhà phát triển Java sẽ nói rằng việc trộn nhiều loại vào một danh sách 'Danh sách
Hãy để tôi chỉ thêm tên mẫu chống được yêu thích chưa được công nhận của tôi ở đây: Trộn các loại không liên quan trong một danh sách duy nhất có mùi của [đối tượng từ chối] (http://stackoverflow.com/a/3725728/40342). –