Tôi đã tìm kiếm tất cả trên web, nhưng tất cả các câu trả lời chỉ bao gồm sự khác biệt. Tôi biết sự khác biệt, nhưng tôi không hiểu sự khác biệt trong các ứng dụng của họ. Ví dụ, giả sử chúng ta phải lấy hai giá trị thả nổi, nếu sử dụng gấp đôi, chúng ta có thể dễ dàng so sánh bằng cách sử dụng a==b
, trong khi nếu chúng ta sử dụng Double, chúng ta sẽ phải sử dụng a.equals(b)
.Sự khác biệt trong cách sử dụng kiểu dữ liệu nguyên thủy và bao bọc và nhu cầu của kiểu dữ liệu bao bọc là gì?
Trả lời
Có nhiều cảnh phía sau hậu trường. Một trong những lý do là như thế nào API Collections được phát triển trong Java ...
Hãy xem xét rằng bạn không thể làm bất cứ điều gì như:
List<int> myList
trong Java. Bạn sẽ cần trình bao bọc cho rằng
List<Integer> myList
vì Bộ sưu tập làm việc với các đối tượng chứ không phải nguyên thủy.
Mặt khác, giấy gói là đối tượng cung cấp các nhà phát triển một nhóm tốt đẹp của phương pháp/hằng số mà làm cho "nhanh hơn và dễ dàng hơn" một số hoạt động như:
int x = 17;
Bây giờ, nhờ vào sự bao bọc bạn có thể làm :
String pars= Integer.toBinaryString(x);
pars= Integer.toHexString(x);
Integer.MAX_VALUE;
Integer.highestOneBit(x);
Nếu không, bạn sẽ bị đau ở cổ, vì nguyên thủy x
không có ích lợi gì cho bạn.
Trên bên lưu ý, có những triển khai của "Bộ sưu tập nguyên thủy cho Java" ví dụ ở đây: http://pcj.sourceforge.net –
Khi bạn sử dụng Collections bạn phải sử dụng các đối tượng và không nguyên thủy.
List<double> list = new ArrayList<double>; // not allowed
List<Double> list = new ArrayList<Double>; // allowed
Map<double, String> map = new HashMap<double, String>(); // not allowed
Map<Double, String> map = new HashMap<Double, String>(); // allowed
Hoặc nếu bạn muốn số Double
của bạn có thể bị vô hiệu. Hữu ích ví dụ với Hibernate 's tổ chức và với DTO or POJO
private int number; // default: 0
private Integer number; // default: null
Double
cho phép bạn làm diễn viên nhanh chóng
double.intValue();
double.toString();
Bạn có thể tìm thấy nó trên blog
1. Đầu tiên
Đôi là kiểu tham chiếu để bạn có thể sử dụng nó làm mẫu arg ument
Ví dụ:
public class Tmp<T> {
public Tmp() {
}
}
Nếu bạn muốn tạo ra một lớp như thế.
Sau đó, bạn phải vượt qua kiểu tham chiếu, trong khi tạo ra đối tượng của trong. Ví dụ
new Tmp<Integer>()
Bạn sẽ nhận được một lỗi nếu bạn tạo đối tượng như:
new Tmp<int>()
2. Thứ hai
Chỉ vì lớp Wrapper có thể làm lập trình datatype chung .
Ví dụ phương thức dưới đây chấp nhận bất kỳ loại số nào (Byte, Integer, Double, Short, Float, Long, BigDecimal, BigInteger, AtomicInteger, AtomicLong
) và trả lại số Integer
bổ sung các số đó.
public Integer add(Number a, Number b){
return a.intValue() + b.intValue();
}
3. Thứ ba
Trong phiên bản trước của Java là không hỗ trợ autoboxing và AutoUnboxing. Vì vậy, nếu bạn sử dụng phiên bản Java đó thì bạn có thể dễ dàng phân biệt cả hai.
Ví dụ, nếu bạn sử dụng Java 1.4 hoặc phiên bản trước đó thì:
Integer a = 1; // Auto Boxing(Not Works)
Integer a2 = new Integer(2); // Boxing (It Works)
4. Thứ tư
Storage của cả hai cũng khác nhau các loại nguyên thủy được lưu trữ trong Stack
trong khi các loại tài liệu tham khảo là cửa hàng ở Heap
5. Thứ năm
Bạn có thể sử dụng chức năng của lớp đó như phân tích cú pháp chuỗi thành Số nguyên, Số kép, v.v. và sử dụng đồng ý của cùng một loại.
Sau đây là các chức năng và sự đồng ý của Integer
lớp
6. Thứ sáu
Bạn có thể serialize Integer
trong khi nó không phải là có thể với int
7. Seventh
Bạn có thể vượt qua Integer
như một phương pháp RMI nhưng điều này cũng không thể với int
Lưu ý: Cả hai Integer
và int
thể là một phần của một đối tượng trong lập luận RMI trên thực tế bên trong lớp Integer
họ lưu trữ giá trị trong int
.
8. Eighth
Variable của int
là có thể thay đổi (Nó không phải là trường hợp với final int
) trong khi Integer
là không thay đổi. Nó sẽ tạo đối tượng mới khi chúng ta thay đổi giá trị.
- 1. Thực tiễn tốt nhất: Sử dụng, lớp trình bao bọc hoặc loại dữ liệu nguyên thủy?
- 2. Sự khác biệt giữa lớp nguyên thủy và lớp bao bọc trong ánh xạ cột JPA (Hibernate) là gì?
- 3. Sự khác biệt giữa vùng chứa và trình bao bọc
- 4. Luôn sử dụng trình bao bọc đối tượng nguyên thủy cho JPA @Id thay vì loại nguyên thủy?
- 5. Sự khác biệt giữa trình bao bọc, ràng buộc và cổng là gì?
- 6. Hiệu suất: typedef vs lớp trình bao bọc cho các kiểu nguyên thủy?
- 7. Sự khác nhau giữa các tham số kiểu ký tự đại diện và ký tự được bao bọc là gì?
- 8. Sự khác nhau giữa một kiểu dữ liệu trừu tượng (ADT) và một cấu trúc dữ liệu là gì?
- 9. Sự khác nhau giữa String.Format và string.Format (và các thành viên tĩnh khác của các kiểu dữ liệu nguyên thủy) là gì?
- 10. Sự khác nhau giữa các kiểu dữ liệu BLOB và TEXT trong MySQL là gì?
- 11. Sự khác nhau giữa các kiểu dữ liệu cột BOOL và BOOLEAN của MySQL là gì?
- 12. Sử dụng Streams với các loại nguyên thủy dữ liệu và tương ứng với giấy gói
- 13. Sự khác biệt giữa kiểu dữ liệu "Văn bản" và "Chuỗi" trong SQLite
- 14. Sự khác nhau giữa kiểu dữ liệu-dojo và dojotype là gì?
- 15. Null cho các kiểu dữ liệu nguyên thủy
- 16. sự khác nhau giữa các kiểu dữ liệu thô dài và dài trong Oracle là gì?
- 17. Sự cần thiết của phương thức intValue() nếu trình bao bọc sử dụng unboxing là gì?
- 18. sự khác biệt giữa kiểu dữ liệu thập phân và số trong postgresql
- 19. Sự khác biệt giữa tập dữ liệu và cơ sở dữ liệu là gì?
- 20. Sự khác biệt giữa mô tả "trình bao bọc" và "phương thức"?
- 21. Sự khác biệt giữa dữ liệu biểu mẫu và tải trọng yêu cầu là gì?
- 22. Trình bao bọc cơ sở dữ liệu gọn nhẹ của Python cho SQLite
- 23. Sử dụng kiểu dữ liệu số phải
- 24. Sự khác biệt giữa các loại nguyên thủy và tham chiếu là gì?
- 25. Sự khác biệt của việc nhập Kiểu bằng cách sử dụng GetType() và typeof() là gì?
- 26. Arrays.sort() - hai chiến lược khác nhau cho các kiểu dữ liệu nguyên thủy và phức tạp được sắp xếp
- 27. Kích thước của kiểu dữ liệu sử dụng NumPy
- 28. Các thành viên thực thể có nên là các kiểu dữ liệu nguyên thủy hoặc các kiểu dữ liệu java không?
- 29. Kích thước của dữ liệu kiểu enum trong C++ là bao nhiêu?
- 30. Sự khác biệt giữa kiểu dữ liệu 'datetime64 [ns]' và '<M8 [ns]'?
Hy vọng rằng so sánh '==' trên phao chỉ là một ví dụ :) http://stackoverflow.com/questions/1088216/whats-wrong-with-using-to-compare-floats-in-java – jensgram