[java] for 루프 초기화에서 변수를 선언해야하는 이유는 무엇입니까?

int v = 0;

for (v; v<2; v++) {
    ...

}

Java에서 왜 이것이 허용되지 않습니까?

vfor 루프 초기화에서 변수를 선언해야하는 이유는 무엇 입니까? 내가 그렇게하면 진술이 아니라는 것을 알고 있지만 왜 Java가 위의 내용을 허용하지 않습니까?



답변

v루프 전에 선언 된 경우 for 문의 첫 부분을 비워 두어야합니다.

int v = 0;

for (; v < 2; v++) {
    ...
}

글을 쓰는 것은 의미가 없습니다 v;.


답변

선언에서 불필요한 것을 제거하면 루프 선언이 유효합니다 v( v사전 선언 된 것으로 가정 ).

로 변경 for(; v < 2; v++)

기존 for루프의 세 가지 수정자는 모두 Java에서 선택적입니다.

대안 예 :

아래는 while (true)루프 와 동일 합니다.

for (;;) {

}

추가 증분 추가 :

int j = 0;
for (int k = 0; k < 10; k++, j++) {

}

루프를 종료하기위한 추가 조건 추가 :

int j = 0;
for (int k = 0; k < 10 || j < 10; k++, j++) {

}

동일한 유형 변수를 여러 개 선언 :

for (int k = 0, j = 0; k < 10 || j < 10; k++, j++) {

}

그리고 분명히 원하는대로 혼합하여 사용할 수 있으며 원하는 것을 완전히 제거 할 수 있습니다.


답변

자바 문서 에 따르면

for 문의 일반적인 형태는 다음과 같이 표현할 수 있습니다.

for (initialization; termination; increment) {
    statement(s)
}

for 루프의 세 가지 표현은 선택 사항입니다

for루프를 만들고 3 expr 중 일부를 비워 둘 수 있음을 의미합니다 . 옵션 중 하나는 int v루프 전 선언입니다 .

int v = 0;
for(; v<2; v++)


답변

에서 변수를 선언 할 필요는 없습니다 ForInit.

다른 사람들이 지적했듯이 간단히 ForInit; 그러나 여기에서 명령문 표현식 목록을 사용할 수도 있습니다.

예를 들어, 새 클래스 인스턴스를 작성하고 메소드를 호출하며 변수를 지정 / 증가 / 감소시킬 수 있습니다.

int v;
for (new String(), "".toString(), v = 0, v++;;);

(이 예는 무의미하지만 합법적입니다)

그러나 이러한 명령문 표현식을 로컬 변수 선언과 혼합 할 수는 없습니다.


답변

향상된 for루프 에는 필요하지 않습니다 .

public class Main {
    public static void main(String[] args) {
        int[] integers = { 10, 20, 30 };
        for (int x : integers) {
            System.out.println(x);
        }
    }
}


답변

int w = 0;

int v;

for (v; v <2; v ++) {

} 루프 이전에 v를 선언 했지만 초기화하지 않고 다시 사용했습니다.

이미 선언되고 초기화 된 w 를 사용하면 아래 코드와 같은 문제가 없습니다.

for (; w <2; w ++) {

}


답변