Quero uma ajuda sobre o Arrays.binarySearch do java

eu tenho que criar um programa que verifique os dígitos que o usuário digitou e verificar se ele é valido ou não, no caso o usuário não pode digitar um caractere que não esteja aqui : “‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘+’,’-’,’*’,’/’,’%’” eu usei o Arrays.binarySearch e funcionou todo caractere que não estiver ai dentro vai dar um valor abaixo de -1 tipo -16, e todos os números vão seguir sua ordem mas quando digitar um “-” por exemplo ele da -1, alguém poderia me dizer o que o Arrays.binarySearch está fazendo no programa de uma forma mais detalhada possível

public static boolean verificar (String valor){
char[] hexa = {‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘+’,’-’,’*’,’/’,’%’};
int posicaoCaractere = 0;
int i = valor.length();
while (i != 0) {
posicaoCaractere = Arrays.binarySearch(hexa, valor.charAt(i - 1));
i–;
System.out.println(posicaoCaractere);
if (posicaoCaractere < -1) {
JOptionPane.showMessageDialog(null, “algum digito está invalido”);
return false;
}
}
JOptionPane.showMessageDialog(null, “digitos validos”);
return true;
}

este é o código