Tại sao có kiểu nguyên thủy cho số nguyên (int) mặc dù chúng ta có một đối tượng cho số nguyên là Số nguyên? Nhưng điều tương tự không phải với loại Chuỗi. Không có kiểu nguyên thủy như vậy cho String. Luôn chuỗi giao dịch với tham chiếu đối tượng?Số nguyên là kiểu nguyên thủy
Trả lời
Tốc độ. Nó nhanh hơn nhiều cho mã máy để thêm hai int bằng cách sử dụng các chỉ lệnh CPU nguyên bản, thay vì phải lấy hai đối tượng Integer, trích xuất các giá trị int từ chúng, sau đó thêm chúng, tạo một đối tượng Integer mới để chứa kết quả. (how JNI maps primitives)
Chuỗi rất phức tạp, có nhiều phương pháp và do đó không có bộ đếm mã máy. Họ được thăng chức thành một Object thật sự. Ngoài ra, một chuỗi chia sẻ trạng thái với các chuỗi khác được tạo với cùng một giá trị. Không có giá trị nguyên thủy nào chia sẻ trạng thái với các giá trị nguyên thủy khác như thế này. (immutable can be shared | primitive no sharing)
Một kiểu dữ liệu chuỗi phức tạp hơn nhiều so với int - có một lượng bộ nhớ thay đổi để giữ một chuỗi cho một thứ.
Điều này là do bộ xử lý (CPU) có hỗ trợ trực tiếp cho các loại số nguyên chứ không phải cho chuỗi. Và vì lý do thực hiện, Java hỗ trợ một số kiểu gốc có khả năng được hỗ trợ bởi các bộ vi xử lý mà JVM có thể chạy.
Cuối cùng các tính toán được thực hiện ở ngôn ngữ cấp máy. Tôi tự hỏi điều gì tạo ra sự khác biệt giữa các nguyên thủy và các đối tượng về hiệu suất. Câu trả lời được xây dựng sẽ được đánh giá cao.
đây phải là nhận xét - không phải là 'câu trả lời' vui lòng cạnh tranh với chuyến tham quan SO tại đây: http://stackoverflow.com/tour –
- 1. Các kiểu cấu trúc và nguyên thủy
- 2. Tiêm một kiểu nguyên thủy trong AngularJS
- 3. Chuỗi có phải là kiểu nguyên thủy không?
- 4. Kiểu nguyên thủy vs Kiểu đối tượng trong Java
- 5. Android: Không thể gọi toString() trên kiểu nguyên thủy int
- 6. ToString có được gọi cho các kiểu nguyên thủy không?
- 7. Sử dụng các kiểu nguyên thủy với ClassLoader
- 8. Kiểu tham chiếu số nguyên trong C# là gì?
- 9. Cách gửi đa phương thức trên các kiểu nguyên thủy?
- 10. Java: Sao chép mảng của kiểu không nguyên thủy
- 11. Rails ActiveRecord và mảng các kiểu nguyên thủy
- 12. Bản đồ Scala với kiểu giá trị nguyên thủy
- 13. Loại Biến tần bị hỏng cho các kiểu nguyên thủy?
- 14. Xác định các kiểu nguyên thủy trong các mẫu
- 15. Hành vi java lạ với phôi đến kiểu nguyên thủy
- 16. kiểu nguyên thủy enum - hiện nó tồn tại
- 17. Null cho các kiểu dữ liệu nguyên thủy
- 18. Sử dụng quẹt hamcrest với mảng kiểu nguyên thủy
- 19. Đếm nguyên thủy trong Neo4j
- 20. Có phải các phôi nguyên thủy kiểu số nguyên Java "mũ" ở MAX_INT của loại truyền không?
- 21. Initialize mảng của nguyên thủy
- 22. Việc sử dụng tham chiếu const đi tới các kiểu nguyên thủy là gì?
- 23. Thư viện GUI để xử lý nguyên thủy và mảng/bộ sưu tập nguyên thủy
- 24. Các enums Java có được coi là các kiểu nguyên thủy hay tham chiếu không?
- 25. JavaScript: NaN, Object hoặc nguyên thủy là gì?
- 26. Số nguyên thủy và hậu tố của chúng
- 27. Ghi đè kiểu mặc định kiểu xử lý nguyên thủy trong Json.Net
- 28. Loại biến số nguyên thủy trong thời gian biên dịch
- 29. Chứng minh tính nguyên thủy của các số nguyên tố có thể xảy ra mạnh mẽ
- 30. Điều gì là sai khi sử dụng một mảng nguyên thủy như một tham số kiểu thực trong Java 5?
Tôi cũng sẽ thêm không gian. Ít không gian hơn để lưu trữ một số nguyên vào bộ nhớ, hơn là một đối tượng toàn bộ với tất cả các hoạt động của nó. – Alex