Khi Java ra mắt vào đầu năm 1996, các PC thông thường có bộ nhớ từ 8 đến 16 Mb. Vì cả mảng và bộ sưu tập đều gắn liền với kích thước bộ nhớ, việc sử dụng int
để thể hiện số phần tử dường như là tự nhiên, vì nó đủ để giải quyết một mảng có kích thước 4Gb - kích thước khổng lồ ngay cả đối với ổ cứng vào năm 1996, RAM. Do đó, sử dụng long
thay vì int
đối với kích thước bộ sưu tập có vẻ như lãng phí vào thời điểm đó.
Mặc dù kích thước int
có thể là một yếu tố hạn chế vào các thời điểm, nhà thiết kế Java không thể thay đổi thành long
, bởi vì nó sẽ là một thay đổi đột phá.
Không giống như bộ sưu tập Java, luồng có thể có số lượng phần tử không giới hạn tiềm năng và chúng không có cân nhắc về khả năng tương thích. Do đó, sử dụng long
với phạm vi giá trị rộng hơn của nó có vẻ giống như một lựa chọn rất hợp lý.
Tại sao nó phải trả về một int nếu bạn có thể dễ dàng chuyển đổi từ một đủ dài thành int, nhưng không phải từ một int tràn ngập trở lại lâu dài? –
Khi bạn xử lý luồng, thông thường nó sẽ là thứ rất lớn vì thế lý do để phát trực tuyến. Chuyển đổi dài thành một int sẽ mất percision nếu số lượng lớn. –
vì 'long' dài hơn' int' – ACV