2013-10-06 5 views
2

저는 Java에 익숙하지 않아 작동하지 않아서 쓰레기가 들어 있기 때문에 Array 초기화로 프로그램에 충격을 받았습니다. 이것은 내가 뭐하는 거지입니다 :문자 배열을 초기화하십시오.

char[] expArray = new char[expEv.length]; //expEv.length is int - expEv is another array 
//I have tried all following but not working 

expArray = {'\0'};  // error i get: Array constants can only be used in initializers 
expArray = {'',}; 
expArray = {'\0'}; 

System.out.println("array value: " + expArray); // prints " array value: [[email protected] " 

편집 :가 나는 또한 char[] expArray = new char[expEv.length] {'\0'};를 사용하려고했지만

이 좀 도와 컨텍스트에 대한 배열 초기화를 설명해주십시오로 문제가 해결되지 않습니다.

답변

3

가변 크기의 배열을 만들고 싶다면이 사람들이 제공하는 제안이 잘못되었습니다. 사실 현재하고있는 일은 100 % 괜찮습니다.

Java는 명시 적으로 설정되지 않은 변수를 자동으로 초기화합니다. 귀하의 경우 귀하의 배열의 각 값은 null 문자로 초기화됩니다. Here은 각 변수 유형을 초기화 할 대상입니다.

Java의 내장 된 toString()이 예상 한대로 작동하지 않기 때문에 인쇄 할 때 횡설수설하고있는 유일한 이유입니다. 당신이 정말로 다음 배열의 값을 인쇄하려면

getClass().getName() + '@' + Integer.toHexString(hashCode()) 

는이 같은 일을 수행해야합니다 :

System.out.println(Arrays.toString(expArray)); 
-1

는 미안하지만, 자바는 단지 아무튼 여기에 실제로 반환 toString() 내장 것입니다 당신이 그렇게 할 수는 없습니다. 그러나이 충분히 가까이있을 수 배열의 생성 자체가 제로로 모든 요소를 ​​취소하기 때문에

char[] expArray = {'\0'}; 
expArray = java.util.Arrays.copyOf(expArray, expEv.length); 

비록은 '\0'으로 어레이를 초기화하는 경우, 즉, 완전히 불필요하다.

관련 문제