자바에서 부울 배열 초기화


102

이 코드가 있습니다

public static Boolean freq[] = new Boolean[Global.iParameter[2]];
freq[Global.iParameter[2]] = false;

누군가 내가 여기서 정확히 뭘 잘못하고 있는지 그리고 어떻게 고칠 수 있는지 말해 줄 수 있습니까? 모든 배열 요소를 Boolean false로 초기화하면됩니다. 감사합니다

답변:


285

모든 배열 요소를 Boolean false로 초기화하면됩니다.

boolean[]모든 값의 기본값이 false다음과 같도록 대신 사용 하십시오 .

boolean[] array = new boolean[size];

또는을 사용 Arrays#fill()하여 전체 배열을 Boolean.FALSE다음 으로 채 웁니다 .

Boolean[] array = new Boolean[size];
Arrays.fill(array, Boolean.FALSE);

또한 배열 인덱스는 0부터 시작합니다. freq[Global.iParameter[2]] = false;당신이 거기에 있었던 라인은 ArrayIndexOutOfBoundsException. Java의 배열에 대해 자세히 알아 보려면 이 기본 Oracle 자습서를 참조하십시오 .


3
두 번째 코드는 모든 참 값으로 초기화 (설정)하려는 경우에 유용합니다. 좋은 대답입니다!
독재

3
차라리 변수 이름을 반전하고 거짓 값으로 기본 초기화를 사용하고 싶습니다.
BalusC

Boolean[] array각 요소에 대해 세 가지 상태 ( true, false및) 를 가질 수 있기 때문에 실제로 찬성합니다 . null이는 무언가가 "처리되지 않음"이라는 사실을 확인하려는 경우에 유용합니다.
Abhishek Divekar

20

배열은 할당 할 때 false로 초기화됩니다.

Java의 모든 배열은 해당 유형의 기본값으로 초기화됩니다. 즉, int 배열은 0으로 초기화되고 부울 배열은 false로 초기화되며 참조 유형 배열은 null로 초기화됩니다.


12
그는을 사용 Boolean하고 있지 않으므로 boolean기본적으로 null.
BalusC 2010 년

1
옳은. 나는 그것을 보지 못했다. Arrays.fill이 트릭을 수행해야합니다.
Jørgen Fogh

9

Java의 배열은 0에서 인덱싱을 시작합니다. 따라서 예제에서는 배열 외부에있는 요소를 하나씩 참조하고 있습니다.

아마도 freq [Global.iParameter [2] -1] = false;

모든 것을 초기화하려면 배열을 반복해야합니다.이 줄은 마지막 요소 만 초기화합니다.

실제로 Java의 부울에 대해 false가 기본값이라고 확신하므로 초기화 할 필요가 전혀 없습니다.

친애하는


2
그는을 사용 Boolean하고 있지 않으므로 boolean기본적으로 null.
BalusC 2010 년

5

false기본적으로 로 초기화됩니다 . Java에서 배열은 힙에 생성되고 배열의 모든 요소에는 유형에 따라 기본값이 제공됩니다. 들어 boolean데이터 기본 값이 입력합니다 false.


3
그는을 사용 Boolean하고 있지 않으므로 boolean기본적으로 null.
BalusC 2010 년

난 부울을 사용하려고
했는데

2

public static Boolean freq [] = new Boolean [Global.iParameter [2]];

Global.iParameter [2] :

const 값이어야합니다.


1
이것은 사실이 아닙니다. 변수 일 수도 있습니다. 문제는 Global.iParameter [2]를 사용하여 배열에 액세스하고 있다는 것입니다. 그러나 인덱스는 0에서 Global.iParameter [2] -1까지만 진행됩니다 !!
Karussell 2010 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.