2011-02-01 17 views

Respuesta

49

Dado que car no se ha inicializado, no tiene longitud, su valor es null. Sin embargo, el compilador ni siquiera le permitirá compilar ese código como es, arrojando el siguiente error: coche variable podría no haberse inicializado.

debe inicializar primero, y entonces usted puede utilizar .length:

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

Si necesita para inicializar una matriz vacía, puede utilizar el siguiente:

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

Si necesita para inicializarlo con un tamaño específico, para llenar ciertas posiciones, puede usar lo siguiente:

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 

Sin embargo, le recomiendo que utilice un List lugar, si tiene la intención de añadir elementos a la misma:

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

+1 para sugerir listas, que casi siempre son una * interfaz * más adecuada para trabajar que las matrices. –

+2

Su primera afirmación "Dado que el automóvil no se ha inicializado, no tiene longitud, su valor es nulo" es incorrecto. Como el automóvil no se ha inicializado, el código ni siquiera se compilará. Hacer referencia a una variable potencialmente no inicializada es un error de tiempo de compilación. – jarnbjo

+0

Tienes razón, 'javac' de hecho arroja ese error. He editado mi respuesta para dar cuenta de eso. –

4

Pues bien, en este caso la variable car será null, por lo que la eliminación de referencias (como lo hace cuando acceda al car.length) lanzará un NullPointerException.

De hecho, no se puede acceder a esa variable en absoluto hasta un cierto valor sin duda ha sido asignado a él - de lo contrario el compilador se quejará de que "coche variable no podría haber sido inicializado".

¿Qué es lo que estás tratando de hacer aquí (no está claro para mí exactamente qué "solución" estás buscando)?

+0

Bueno, esto viene como parte del proyecto web dinámico, donde no estoy seguro de si se almacenará algún valor en la matriz o no !! Y luego quiero comprobar si mi matriz tiene algo o no ... –

2
String car []; 

es una referencia a una matriz de String-s. ¡No puedes ver una longitud porque no hay ninguna matriz allí!

0

creo que busca este

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

wazzy: wat si el tamaño de la matriz no se conoce de antemano? –

+1

Entonces una matriz puede no ser su mejor opción. Mire una lista como se recomienda @Joao. –

2

Esto no funcionará. Primero tiene que inicializar la matriz. Hasta ahora, solo tiene una referencia String [], apuntando al null.

Cuando intenta leer el miembro de longitud, lo que realmente hace es null.length, lo que da como resultado una NullPointerException.

1

Dado que aún no ha inicializado car, por lo que no tiene existencia en JVM (Java Virtual Machine), por lo que debe inicializarlo primero.

Por ejemplo:

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

Ahora su código se ejecuta bien.

ENTRADA:

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

SALIDA:

1

Como todas las respuestas anteriores han sugerido que lanzará una NullPointerException.

Inicialícelo con algún valor y luego puede usar la propiedad de longitud correctamente. Por ejemplo:

La matriz 'str' ahora está definida, por lo que su longitud también tiene un valor definido

0

En Java, declaramos una cadena de matrices (por ejemplo automóviles.) Como

String []car; 
String car[]; 

Creamos la matriz mediante nuevo operador y especificando el tipo: -

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

Esto asigna una referencia, a una matriz de Cuerdas, al coche. También puede crear la matriz por inicializándola: -

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

Puesto que no se ha inicializado una matriz y que está tratando de acceder a ella, una NullPointerException se lanza.

Cuestiones relacionadas