Java 생성자에서 int 배열 초기화
나는 수업이 있고 그 수업에는 다음과 같은 것이 있다.
//some code
private int[] data = new int[3];
//some code
그리고 내 컨스트럭터:
public Date(){
data[0] = 0;
data[1] = 0;
data[2] = 0;
}
내가 이렇게 하면 모든 게 괜찮아.기본 데이터 값은 초기화되지만 대신 이렇게 하면 다음과 같습니다.
public Date(){
int[] data = {0,0,0};
}
다음과 같이 되어 있습니다.
Local variable hides a field
왜요?
컨스트럭터 내에서 어레이를 초기화하는 가장 좋은 방법은 무엇입니까?
private int[] data = new int[3];
그러면 어레이 요소가 이미 0으로 초기화됩니다.컨스트럭터에서 이 작업을 다시 반복할 필요는 없습니다.
컨스트럭터에서는 다음과 같이 해야 합니다.
data = new int[]{0, 0, 0};
다음 중 하나를 수행할 수 있습니다.
public class Data {
private int[] data;
public Data() {
data = new int[]{0, 0, 0};
}
}
그러면 초기화됩니다.data
또는 다음과 같이 입력합니다.
public class Data {
private int[] data = new int[]{0, 0, 0};
public Data() {
// data already initialised
}
}
그러면 초기화됩니다.data
생성자의 코드가 실행되기 전.
이는 컨스트럭터에서 Atribute와 같은 이름의 로컬 변수를 선언했기 때문입니다.
모든 요소가 0으로 초기화된 정수 배열을 할당하려면 생성자에 다음과 같이 입력합니다.
data = new int[3];
다른 초기값이 있는 정수배열을 할당하려면 다음 코드를 생성자에 넣습니다.
int[] temp = {2, 3, 7};
data = temp;
또는 다음과 같이 입력합니다.
data = new int[] {2, 3, 7};
왜 단순하지 않은가
public Date(){
data = new int[]{0,0,0};
}
에러가 난 이유는int[] data = ...
새 변수를 선언하고 필드를 숨깁니다.data
단, 어레이의 내용은 이미0(디폴트값)으로 초기화되어 있습니다.int
)
컨스트럭터에 다른 int 배열을 만듭니다.
public Date(){
int[] data = {0,0,0};
}
이것을 시험해 보세요.
data = {0,0,0};
메모: 참고로 어레이 요소가 인스턴스 변수로 선언된 경우에는 초기화할 필요가 없습니다.인스턴스 변수는 자동으로 기본값을 가져옵니다.정수 배열의 경우 기본값은 모두 0입니다.
어레이를 로컬로 선언한 경우 각 요소를 초기화해야 합니다.
가장 좋은 방법은 초기화문을 쓰지 않는 것입니다.왜냐하면 만약 당신이 글을 쓴다면int a[]=new int[3]
디폴트로는 Java에서는 어레이의 모든 값(예: a[0]
,a[1]
그리고.a[2]
에 초기화되어 있다0
필드를 숨기는 로컬 변수에 대해 결론을 내릴 수 있도록 전체 코드를 게시하십시오.
언급URL : https://stackoverflow.com/questions/8068470/java-initialize-an-int-array-in-a-constructor
'source' 카테고리의 다른 글
MySql, 날짜 및 시간 열을 타임스탬프로 결합 (0) | 2022.12.25 |
---|---|
유형 힌트를 사용하여 "nullable" 반환 유형을 지정하는 방법 (0) | 2022.12.25 |
MySQL OR과 IN의 퍼포먼스 비교 (0) | 2022.12.25 |
Eclipse는 왜 @Override on interface methods에 대해 불평하는가? (0) | 2022.12.25 |
Java에는 사용 설명서가 있습니까? (0) | 2022.12.25 |