Tôi đã nhìn vào một dự án trong java và tìm thấy một vòng lặp for
được viết như dưới đây:thời gian phức tạp hoặc chi phí ẩn của <Array Name> .length trong java
for(int i=1; i<a.length; i++)
{
...........
...........
...........
}
Câu hỏi của tôi là: là nó tốn kém để tính toán a.length
(ở đây là tên mảng)? nếu không thì làm thế nào a.length
là nhận được tính nội bộ (có nghĩa là làm thế nào JVM đảm bảo O (1) truy cập vào điều này)? Tương tự như:
int length = a.length;
for(int i=1; i<length; i++)
{
...........
...........
...........
}
ví dụ như truy cập giá trị của biến cục bộ bên trong hàm. Cảm ơn.
Thời gian là một hằng số nhưng có thể chậm hơn một chút so với lưu trữ độ dài trong biến ngăn xếp. Tôi nghi ngờ điều này bởi vì JVM phải đi đến mảng và sau đó nhận được chiều dài. Nhưng nó không quét các phần tử mảng và đếm chúng. –
xem http://stackoverflow.com/questions/5950155/how-is-length-implemented-in-java-arrays – Shoe
'a.length' không nhận được" tính toán ", đó là trường cuối cùng. – arshajii