Trong Java nó làChưa sửa đổibiến phương thức, bị thiếucuối cùng
, khởi tạo lại vòng loại mỗi lần
- phương pháp tĩnh
- phương thức ví dụ
Nếu câu trả lời cho 1. hoặc 2. (hoặc cả hai) là cuối cùng
Trình định tính cho phép Java thực hiện tối ưu hóa và lưu trữ các biến phương thức chỉ một lần?
Nếu câu trả lời phụ thuộc vào loại biến, biến đó có được tối ưu hóa/không được tối ưu hóa không? Ví dụ, là Sợi dây
,số nguyên
tối ưu hóa Bản đồ
Không được tối ưu hóa?
Ngược lại, Java chỉ lưu trữ một biến lớp tĩnh như
private static final String foo = "Ninja Rùa Đột Biến Tuổi Teen";
một lần. Để làm rõ: câu hỏi là liệu có nên
1:
tĩnh SomeReturnValueOrVoid SomeMethod() {
// 1.a Không sửa đổi, liệu mỗi lần gọi phương thức có được khởi tạo lại không?
Chuỗi foo = "Ninja Rùa Đột Biến Tuổi Teen";
// 1.b Được đánh dấu là cuối cùng, liệu mỗi lần gọi phương thức có được khởi tạo lại không?
Thanh chuỗi cuối cùng = "Rùa anh hùng đột biến tuổi teen";
}
2:
SomeReturnValueOrVoid SomeMethod() { // không tĩnh
// 2.a Không sửa đổi, liệu có khởi tạo lại mỗi lần gọi phương thức không?
Chuỗi foo = "Ninja Rùa Đột Biến Tuổi Teen";
// 2.b Được đánh dấu là cuối cùng, liệu mỗi lần gọi phương thức có được khởi tạo lại không?
Thanh chuỗi cuối cùng = "Rùa anh hùng đột biến tuổi teen";
}
Tương đương với
3:
lớp SomeClass {
static final String foo = "Ninja Rùa Đột Biến Tuổi Teen";
Một số phương thức trả về hoặc vô hiệu
// Sử dụng foo
}
tĩnh SomeReturnValueOrVoid SomeMethod() {
// Sử dụng foo
}
...
}
Cho dù đó là tĩnh
Phương pháp vẫn cuối cùng
biến hoặc cả hai, không có sự khác biệt. Phạm vi của các biến cục bộ có nghĩa là việc gán này sẽ diễn ra mọi lúc (ngoại trừ việc tối ưu hóa*).
Tuy nhiên, khi nói đến các chuỗi trong ví dụ của bạn, các chuỗi này sẽ đến từ hồ bơi dây .vì vậy việc chuyển nhượng sẽ diễn ra mọi lúc, nhưng tất cả đều sẽ tham chiếu giống nhau sợi dây
Ví dụ.
*tối ưu hóa - Trình biên dịch JITCác giá trị có thể được nội tuyến, do đó, mỗi giải pháp có thể chạy nhanh như giải pháp kia. Do đó, bạn không nên cố gắng tối ưu hóa vi mô bản thân trừ khi bạn nhận thức được các vấn đề về hiệu suất thực tế.
Tôi là một lập trình viên xuất sắc, rất giỏi!