Tôi có đoạn mã sau:Vòng lặp nâng cao Java: (không) được đánh giá trong tiêu đề của vòng lặp là gì?
for (Attribute thisAttribute : factor.getAttributes()) {
// blabla
}
nơi factor.getAttributes()
lợi nhuận List<Attribute>
.
Rõ ràng, chỉ có một cuộc gọi ban đầu là factor.getAttributes()
và sau đó bắt đầu truyền tải. Tuy nhiên, tôi không hiểu tại sao chỉ có một cuộc gọi. Nếu tôi đã bao gồm một cuộc gọi chức năng trong tiêu đề của một vòng lặp thường xuyên for()
, tôi tin rằng nó sẽ được đánh giá ở mỗi lần lặp. Trong khía cạnh đó, làm thế nào và tại sao là vòng lặp tiên tiến khác nhau?
Đối với mỗi vòng lặp là một bit khác nhau cho bình thường cho vòng lặp. Bạn cần phải hiểu rằng một cho mỗi vòng lặp, chúng tôi nhận được bộ sưu tập và sử dụng trình lặp để lặp lại mặc dù nó. – StackFlowed
Vậy làm thế nào để JVM biết rằng tôi muốn thu thập chỉ một lần ngay từ đầu? – James
Phụ thuộc vào phần đầu vòng lặp mà bạn đang nói về tần suất một cái gì đó được gọi. Trong một vòng lặp cổ điển, 'for (int i = getStartInt(); i
ajp15243