Java 클래스에서 범위에 대해 학습했습니다. 그리고 배워서 나는 그것이 짧게 한 번 언급되고 결코 다시는 말하지 않았다는 것을 의미한다. 몇 가지 질문이 게시되었으며 두 코드 간의 차이점을 이해하는 데 어려움이 있습니다. 첫 번째 :Java의 변수의 개인, 정적 및 범위
public class Shadow3 {
private static int i = 99;
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
System.out.println(i);
}
}
그리고 두 번째 :
public class Shadow4 {
private int i;
public void doSomething(int n) {
for (int i = 0; i < n; i++) {
System.out.println(i);
}
}
public static void main(String[] args) {
new Shadow4().doSomething(9);
}
}
내가 처음에 오류가 변수가 두 번 선언하는 것이 아니라는 것을 이해하지만, 내가 왜 범위를 이해하지 못하는 Shadow 클래스에서 선언 된 변수는 중복 오류를 발생시키는 main 메소드에 도달하지 않습니다. 나는 또한 for 루프의 i 값이 일시적이기 때문에 변수의 첫 번째 코드에서 변수가 for 루프에서 사용될 때 변수를 개인 정적으로 선언 할 수없는 이유를 이해하지만 어떻게 이해할 수 있습니까? 두 번째 코드의 변수 i는 여전히 사적이기 때문에 유효합니다.
나도 블록을 생각하지 않는다 사용하는 거라고, 그래서 다른 위해, 당신은 인스턴스 변수를 가지고
Shadow3.i
와 정적 변수를 참조 할 수 있습니다 코드에 오류가 있습니다. 왜 그들이 그렇게 생각하니? for 루프는 임시 변수를 가지며 범위 만 지정됩니다. 이 코드를 실행 했습니까? 너 뭐 알아 차 렸니? –당신이 완전히 옳습니다. 나는 수업을 삭제하고 다시 만들고 다시 시도해 보았다. 내 코드에서 다른 오류를 놓쳤을 것입니다. 감사합니다 :) –
여기에 같은 질문입니다. http://stackoverflow.com/questions/10459487/difference-between-public-static-and-private-static-variables – Neeraj