int v = 0;
for (v; v<2; v++) {
...
}
Java에서 왜 이것이 허용되지 않습니까?
v
for 루프 초기화에서 변수를 선언해야하는 이유는 무엇 입니까? 내가 그렇게하면 진술이 아니라는 것을 알고 있지만 왜 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 ++) {
}