Tôi đang hợp nhất mã được viết bởi hai người khác nhau và thông báo rằng việc đúc một giá trị String vào một Long đã được thực hiện theo hai cách khác nhau.Sự khác biệt giữa Long.valueOf (java.lang.String) và mới Long (java.lang.String)?
Coder # 1 đã làm điều này:
String strId = "12345678";
...
Long lId = new Long(strId);
Trong khi coder # 2 đã làm điều này:
String strId = "12345678";
...
Long lId = Long.valueOf(strId);
Về mặt chức năng, mã hoạt động giống hệt nhau. Có một khối try/catch xung quanh mỗi bit để xử lý bất kỳ NumberFormatException
nào được ném. Giá trị chuỗi đến là một chuỗi gồm 8 chữ số đại diện cho một số thập phân: "12345678"
và trong cả hai trường hợp, nó được chuyển đổi chính xác thành Long
.
Có sự khác biệt về chức năng nào giữa việc truyền chuỗi trong hàm tạo và sử dụng Long.valueOf() không? Tôi đã kiểm tra các nhà xây dựng doc ở đây:
và các tài liệu cho valueOf() ở đây:
Long.valueOf(java.lang.String)
Theo như tôi có thể nói, cả hai đều gọi parseLong() để nó không quan trọng được sử dụng. Tôi chỉ muốn chắc chắn rằng tôi không đặt mình lên cho một số hành vi kỳ lạ hơn nữa xuống đường. Ngoài ra, là một trong hai phong cách "chính xác" (haha) hơn khác?
Đây chính xác là những gì tôi đã hiểu trước khi tìm kiếm http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Long.java này, bạn có thể chia sẻ liên kết nguồn. –
@ArunManivannan .. Bạn có thể tìm mã nguồn trong thư mục cài đặt jdk. Đi tới 'C: \ Program Files \ Java \ jdk' sẽ có một thư mục' src'. Có thể ở định dạng nén. Giải nén nó. Đi tới 'java -> lang -> Long.class' để xem mã nguồn. –
Điều này rất hữu ích, cảm ơn đoạn mã và giải thích. – AWT