cuốn sách gpt4 ai đã làm

SimpleDateFormat mới luôn trả về cùng một tham chiếu cho dateFormat đã cho

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 11:09:52 26 4
mua khóa gpt4 Nike


Tôi đang cố gắng tái tạo lỗi bằng cách sử dụng cùng một phiên bản SimpleDateFormat trên nhiều luồng. Tuy nhiên, tôi gặp phải một vấn đề khác và không tìm thấy câu trả lời nào.

Khối mã đơn giản này tái hiện vấn đề tôi đang gặp phải.

DateFormat d1 = SimpleDateFormat mới ("ddMMyyyy");
DateFormat d2 = SimpleDateFormat mới("ddMMyyyy");
DateFormat d3 = SimpleDateFormat mới("ddMMyy");
System.out.println("d1 = " + d1);
System.out.println("d2 = " + d2);
System.out.println("d3 = " + d3);

Kết quả của thao tác này trong java 7 (1.7_0_21) như sau

d1 = java.text.SimpleDateFormat@c5bfbc60
d2 = java.text.SimpleDateFormat@c5bfbc60
d3 = java.text.SimpleDateFormat@b049fd40

Như bạn có thể thấy, mặc dù tôi tạo các đối tượng mới cho d1 và d2 nhưng cuối cùng chúng vẫn có cùng một tham chiếu. Vì lược đồ khác nhau nên d3 cuối cùng trở thành một phiên bản mới.

Java có thực hiện tối ưu hóa này khi biên dịch/chạy không? Mọi gợi ý sẽ hữu ích

câu trả lời hay nhất

Định dạng ngày đơn giảnĐịnh dạng ngày (Định dạng ngày đơn giản siêu hạng) và Định dạng (Định dạng ngày Super class) đều được thực hiện toString(), vì vậy thực sự đang thực hiện Object trong lớp toString(), mã của nó là:

Chuỗi công khai toString() {
trả về getClass().getName() + "@" + Integer.toHexString(hashCode());
}

现在,Định dạng ngày đơn giản hashCode được tạo:

mã băm int công khai()
{
trả về mẫu.hashCode();
// vừa đủ trường để phân bổ hợp lý
}

Điều này có nghĩa là nếu bạn tạo nhiềungười mẫucủaĐịnh dạng ngày đơn giảntrường hợp (như trong trường hợp của bạn), họ sẽ cónhư nhaumã băm,Vì vậytoString()Giá trị tương tự sẽ được trả về cho các trường hợp này.

Hơn nữa, như Rixmath đã phát hiện ra, với cùng một mẫu của Định dạng ngày đơn giản Các trường hợp cũng sẽ bằng nhau.

Về java - SimpleDateFormat mới luôn trả về cùng một tham chiếu cho một dateFormat nhất định, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/46138451/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress