[Java] static 변수 사용시 주의사항
2024. 2. 1. 11:02ㆍJava
static 변수를 만들고 메서드에서 같은 이름의 지역 변수를 만들고 초기화하면 static 변수는 여전히 초기화되지 않는다.
예를 들어, 아래와 같이 설정을 해놓았다.
public class SubSet {
static int N, target;
static int[] subSet;
static int[] set;
static boolean isSelected[];
public static void main(String[] args) {
set = new int[] {1, 2, 3};
int N = set.length;
subSet = new int[N];
isSelected = new boolean[N];
generateSubSet(0);
}
그리고 아래의 함수를 사용하면 원하는 결과가 나오지 않는다. 왜냐하면 N은 static 변수인데 지역 변수를 초기화한 것이고 이 N은 초기화되지 않았기 때문이다.
private static void generateSubSet(int cnt) {
if (cnt == N) {
for (int i = 0; i < N; i++) {
System.out.print((isSelected[i]?set[i]:"X") + "\t");
}
System.out.println();
return;
}
isSelected[cnt] = true;
generateSubSet(cnt+1);
isSelected[cnt] = false;
generateSubSet(cnt+1);
}
'Java' 카테고리의 다른 글
[Java] int의 범위 (0) | 2024.04.08 |
---|---|
[Java] RuntimeException 정리 (0) | 2024.02.05 |
[Java] this와 super의 차이에 대한 나름의 이해 (0) | 2024.02.01 |
[Java] 스트림 특히 read(byte b[], int offset, int len)에 대한 이해 (0) | 2024.01.29 |
[Java] abstract class도 생성자를 가진다. (0) | 2024.01.23 |