2010-01-20 48 views
8

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

18

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)

+1

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

0

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ứ.

1

Đ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.

0

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.

+0

đâ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 –

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