2011-02-01 6 views

답변

49

car은 초기화되지 않았으므로 길이가없고 값은 null입니다. 그러나 컴파일러는 코드 과 같이 컴파일하도록 허용하지 않습니다. 다음 오류가 발생합니다. 변수 자동차가 초기화되지 않았을 수 있습니다..

가 먼저 초기화해야하고, 다음 .length 사용할 수 있습니다 당신은 빈 배열을 초기화해야하는 경우

String car[] = new String[] { "BMW", "Bentley" }; 
System.out.println(car.length); 

을, 다음을 사용할 수 있습니다

String car[] = new String[] { }; // or simply String car[] = { }; 
System.out.println(car.length); 

당신이 필요로하는 경우 특정 위치를 채우기 위해 특정 크기로 초기화하려면 다음을 사용할 수 있습니다.

String car[] = new String[3]; // initialize a String[] with length 3 
System.out.println(car.length); // 3 
car[0] = "BMW"; 
System.out.println(car.length); // 3 
(210)

그러나, 나는 당신이 그것에 요소를 추가하려는 경우, 대신 List를 사용하는 것이 좋습니다 것 :

List<String> cars = new ArrayList<String>(); 
System.out.println(cars.size()); // 0 
cars.add("BMW"); 
System.out.println(cars.size()); // 1 
+1

+1은 제안 목록을위한 것입니다.이 목록은 거의 항상 배열보다 더 적합한 * 인터페이스 *입니다. –

+2

첫 번째 진술 "자동차가 초기화되지 않았으므로 길이가없고 그 값은 null입니다"라는 오류가 잘못되었습니다. 자동차가 초기화되지 않았기 때문에 코드는 컴파일되지 않습니다. 잠재적으로 초기화되지 않은 변수를 참조하는 것은 컴파일 타임 오류입니다. – jarnbjo

+0

맞습니다. javac이 실제로 그 오류를 던집니다. 나는 그것을 설명하기 위해 나의 대답을 편집했다. –

4

음,이 경우 car 변수는 null, 당신이 할 정도로 (그것을 역 참조 할 것 car.length에 액세스 할 때) NullPointerException이 표시됩니다.

실제로 어떤 값이 할당 될 때까지 해당 변수 에 액세스 할 수 없습니다. 그렇지 않으면 컴파일러에서 "변수 자동차가 초기화되지 않았을 수 있습니다."라고 불평 할 것입니다.

여기서 무엇을하려고합니까? 정확히 "솔루션"이 무엇인지 찾고 계십니까?

+0

잘 동적 웹 프로젝트의 일부로, 어떤 값이 배열에 저장 될지 여부는 확실하지 않습니다 !! 그리고 나서 배열에 아무것도 없는지 확인하고 싶습니다 ... –

2
String car []; 

은 String-s 배열에 대한 참조입니다. 거기에 배열이 없으므로 길이를 볼 수 없습니다!

0

난 당신이 작동하지 않습니다이

String[] car = new String[10]; 
int size = car.length; 
+0

wazzy : 배열의 크기가 손에 알려지지 않았습니까? –

+1

그러면 배열이 최선의 선택이 아닐 수도 있습니다. @Joao가 추천 한대로 목록을보십시오. –

2

를 찾고 있습니다 생각합니다. 먼저 배열을 초기화해야합니다. 지금까지 null을 가리키는 String [] 참조 만 있습니다.

길이 구성원을 읽으려고하면 실제로는 null.length이되어 NullPointerException이 발생합니다.

1

car을 초기화하지 않았으므로 JVM (Java Virtual Machine)에 존재하지 않으므로 먼저 초기화해야합니다. 예를 들어

:

car = new String{"Porsche","Lamborghini"}; 

이제 코드는 잘 실행됩니다.

INPUT :

String car []; 
car = new String{"Porsche","Lamborghini"}; 
System.out.println(car.length); 

출력 : 위의 모든 답변은 NullPointerException이 발생합니다 제안으로

2

1

.

일부 값으로 초기화 한 다음 length 속성을 올바르게 사용할 수 있습니다. 예 :

String[] str = { "plastic", "paper", "use", "throw" }; 
System.out.println("Length is:::" + str.length); 

'str'배열이 정의되었으며 길이도 정의 된 값을 갖습니다.

0

자바에서, 우리는

String []car; 
String car[]; 

우리는 새로운 연산자를 사용하여 배열을 만들 때와 유형을 지정하여 배열 (. 예를 들어, 자동차)의 문자열을 선언 -

String []car=new String[]; 
String car[]=new String[]; 

이는 할당 문자열의 배열에 대한 참조를 자동차에 적용합니다. 당신은 또한 초기화하여 배열을 만들 수 있습니다 -

String []car={"Sedan","SUV","Hatchback","Convertible"}; 

는 당신이 배열을 초기화하지 않은 당신이 액세스하려는 때문에, NullPointerException이가 발생합니다.

관련 문제