Pregunta Java: binarySearch con null

2 min de lectura

Piensa la respuesta antes de abrirla. Todas las opciones parecen razonables, y casi siempre hay un detalle que lo cambia todo.

Pregunta Java · Arrays

¿Cuál es el resultado de compilar y ejecutar el siguiente código? ¿Y por qué?

import java.util.Arrays;

public class Prueba {
  public static void main(String args[]){
    String[] arr = {"texto1", "texto3" , "texto2"};
    Arrays.sort(arr);
    System.out.print(" " + Arrays.binarySearch(arr, "texto2"));
    System.out.print(" " + Arrays.binarySearch(arr, "texto3"));
    System.out.print(" " + Arrays.binarySearch(arr, null));
  }
}
  1. Imprime ' 2 1 -1'
  2. Imprime ' 1 2' y lanza una java.lang.NullPointerException.
  3. Imprime ' 2 1 0'
  4. No compila porque sort no funciona con arreglos de Strings.
Ver la respuesta

Respuesta: 2.

java Prueba1 2Exception in thread "main" java.lang.NullPointerException: Cannot read field "value" because "anotherString" is null
	at java.base/java.lang.String.compareTo(String.java:2105)
	at java.base/java.lang.String.compareTo(String.java:144)
	at java.base/java.util.Arrays.binarySearch0(Arrays.java:2231)
	at java.base/java.util.Arrays.binarySearch(Arrays.java:2171)
	at Prueba.main(Prueba.java:9)

Después de sort el arreglo queda {"texto1", "texto2", "texto3"}, así que "texto2" está en la posición 1 y "texto3" en la 2. Para buscar, binarySearch compara con compareTo, y comparar una cadena con null lanza la excepción. Las dos primeras búsquedas ya se habían impreso, sin salto de línea porque se usa print, y la excepción aparece pegada a ellas.

La imagen original no llevaba import java.util.Arrays;, y sin esa línea el código no compila.

Pregunta publicada en 2013 y revisada en octubre de 2026. La respuesta se comprobó compilando y ejecutando el código con Java 25 LTS en un contenedor limpio; las salidas están copiadas de esa ejecución.

4 comentarios en «Pregunta Java: binarySearch con null»

Deja un comentario