Tại sao lớp BigInteger của Java không có hàm tạo có khả năng lấy một chữ số? [đóng cửa]


8

Tại sao lớp BigInteger của Java không có hàm tạo có khả năng lấy một chữ số? Mỗi lần tôi sử dụng BigIntegers và nhiều lần tôi chỉ nghĩ về chúng, tôi tự hỏi điều này.

Lý do nào khiến các nhà thiết kế của java phải loại trừ một cái bất chấp sự tiện lợi quá mức của nó nên tồn tại?


Bởi vì bạn có thể dễ dàng gọi toStringmột loại tích phân? Và làm như vậy sẽ yêu cầu nhiều quá tải - một cho mỗi loại tích phân.
Oded

1
Tôi nghĩ rằng một nhà xây dựng mất nhiều thời gian sẽ đủ, vì một chữ số có thể tự động chuyển thành dài. Java sẽ cho phép bạn chuyển một loại thành một loại chính xác hơn (không hiệu quả, derp) hoàn toàn. Thật hợp lý khi những người muốn xây dựng một loại từ điểm nổi ít nhất phải sử dụng nó, nhưng tôi không hiểu tại sao chúng ta lại ép buộc những người muốn tạo ra một biginteger có giá trị 3đau khổ.
Wug

@kevincline: Tôi không nói loại bỏ hàm tạo chuỗi, tôi hỏi tại sao không có chuỗi dài.
Wug

Câu trả lời:


19

Câu trả lời nằm trong JavaDoc củaBigInteger.valueOf(long) :

"Phương thức nhà máy tĩnh" này được cung cấp theo ưu tiên cho hàm tạo ( long) vì nó cho phép sử dụng lại các BigIntegers được sử dụng thường xuyên.

Nói cách khác: BigInteger.valueOf(long)thực hiện chính xác những gì bạn yêu cầu nhà BigInteger(long)xây dựng giả thuyết thực hiện, ngoại trừ nó (hoặc ít nhất có thể) hiệu quả hơn một chút với nó.


3
Thông minh. Có một số đại diện Internet quý giá. +1
Robert Harvey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.