Binary search e arrays.sort

Olá galera estou começando a estudar java e como todo estudante iniciante tenho muitas duvidas gostaria de saber como eu faço para pesquisar elementos dentro de um vetor e como colocalos em ordem

String nomes[]={“Pedro”,“Ricardo”,“Jaqueline”,“David”);

int posicao = Arrays.binarSearch(nomes,“David”); mais ai retorna um numero negativo
ai eu ouvi dizer para que isso ocorra corretamente primeiro eu teria que por em ordem os valores do vetor
usando o Arrays.sort();
Mais como eu uso ambos de forma correta se possivel um exemplo fazendo um grande favor

La vai :

	public static void main(String[] args) {
		
		String nomes[]={"Pedro","Ricardo","Jaqueline","David"};
		//ordena o array
		Arrays.sort(nomes);
		//busca
		int posicao = Arrays.binarySearch(nomes,"David");
		//mostra todo mundo
		for(int i = 0; i < nomes.length; i++){
			System.out.println(nomes[i]);
		}
                //resultado
		if(posicao < 0)
			System.out.println("Nao Encontrado");
		else
			System.out.println("Encontrado:("+posicao+")"+nomes[posicao]);
	}

Valeu Cara