package scope;
public class Scope1 {
public static void main(String[] args) {
int m = 10; // m은 psvm 안에서 생존하는 변수
if (true){
int x = 20; // if 안에 있는 블록에서만 적용
System.out.println("if m = " + m); // if 가 psvm 안에 있기 때문에 if 안에서도 변수 값을 확인 할 수 있다.
System.out.println("if x = " + x); // if 안에 있기 때문에 지역변수로 사용 가능
}
// x는 if 밖에서는 사용 불가능 하다
//System.out.println("x = " + x); // if 안에 선언했기 때문에 에러가 난다.
System.out.println("m = " + m);
}
}
package scope;
public class Scope2 {
public static void main(String[] args) {
int m = 10;
for (int i=0; i<2; i++){
System.out.println("for m = " + m); // main 안에 지역변수
System.out.println("for i =" + i); //for 문안 지역변수
} // i는 외부에서는 사용 불가능하다.
System.out.println("main m = " + m); // main 안에 변수라 접근 가능
//System.out.println("main i = " + i); // i는 접근 불가
}
}
package scope;
public class Scope3_1 {
public static void main(String[] args) {
int m = 10;
int temp = 0;
if (m > 0){
temp = m * 2;
System.out.println("temp = " + temp);
}
System.out.println("m = " + m);
}
}
비효율적인 메모리 사용
- temp는 if안에서만 코드 블록에서만 필요하지만 main에서 선언해버리면 main이 종료될때까지 메모리 낭비가 발생한다.
코드 복잡성 증가- temp는 main에서만 선언되어있기 때문에 main이 종료될때 까지 값의 변화에 민감해야한다.
- 유지보수가 어려워지고 코드가 매우 복잡해진다.
package scope;
public class Scope3_2 {
public static void main(String[] args) {
int m = 10;
if (m > 0){
int temp = m * 2;
System.out.println("temp = " + temp);
} // if가 끝나면 temp의 사용을 줄여줄수 있다.
//System.out.println("temp = " + temp);
System.out.println("m = " + m);
}
}
package loop;
public class While2_3 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
int endnum = 3;
// i가 endnum 보다 작거나 같을때만 사용한다.
while (i <= endnum){
sum = sum + i;
System.out.println("i=" + i + " sum=" + sum);
i++;
}
}
}
package loop;
public class For2 {
public static void main(String[] args) {
int sum = 0;
int endNum = 3;
// 더하기 1 + 2 +3
for (int i=1;i<=endNum;i++){
sum += i;
}
System.out.println("누적합 : " + sum);
}
}