import java.util.*;
public class SearchText {
public static void main(String[] args) {
Object[] array1 = new Object[3];
array1[0] = "foo";
array1[0] = 1;
array1[0] = 'a';
int index = Arrays.binarySearch(array1,
"bar");
System.out.println(index);
}
}
What is the
result?
A.
‘ 1
‘ 1
B.
0
0
C.
2
2
D.
Compilation fails
Compilation fails
E.
An exception is thrown at runtime
An exception is thrown at runtime
La
risposta è E.
binarySearch
effettua una scansione di tutti gli elementi dell’array facendo un confronto
tra il valore dell’elemento e il valore in ingresso "bar".
Questo confronto è effettuato tramite il metodo compare dell’interfaccia
Comparator.
Il metodo non gestisce un confronto tra elementi
nulli e in quel caso scatena una java.lang.NullPointerException
.
L’array dell’esercizio viene definito di tre
elementi array1[0] , array1[1] , array1[2]
, ma
solo l’elemento [0] quando si arriva a fare il binarySearch
è diverso da null. Perciò quando si fanno i confronti si scatena l’eccezione :
Exception in thread "main" java.lang.NullPointerException
at java.util.Arrays.binarySearch0(Unknown Source)
at java.util.Arrays.binarySearch(Unknown
Source)
at SearchText.main(SearchText.java:9)
Riferimenti:

