lunedì 11 novembre 2013

Q51

Given:

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
B.
0
C.
2
D.
Compilation fails
E.
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:


Nessun commento:

Posta un commento