Explicar este código (Verifica letra)

Alguém me explicar melhor este codio, e o que o index.of faz?

public class Verif2 {
	public static void main(String[] args) {
		String palavra1="ana";
		String A = "a";
		if (A.indexOf(palavra1.charAt(0)) != -1) {
			System.out.println("Alo");
		}
	}
}

*ele verifica se a Primeira letra da palavra é A. Mas queria que alguem me explicasse, não entendi muito bem!

Acontece o seguinte.
Ele nessa condição verifica se existe a letra a na veriável a.

Ele pega a palavra1 e pega somente o primeiro caracter.

se for diferente de -1 ou seja se existir, já que se ele não encontra ele retorna -1, ele vai executar o que está dentro do laço.

O que o nosso amigo explicou está correto.
Eu na verdade não faria dessa forma.
Se o única função desse código for validar a primeira letra da variável palavra1 seria mais interessante utilizar o método boleano startsWith().

[code]public static void main(String[] args)
{
String palavra1 = “ana”;
String A = “a”;

if (palavra1.startsWith(A))
{
	System.out.println("Alo");
}

}[/code]

Realmente dessa forma está mais elegante, mas se eu não me engano esse método verifica o início e compara com a String.
E no outro modo ele varre a String toda.

Olá otaviojava,

O método charAt() da classe string retornar o caracter de um index da string.
No caso do nosso amigo, ele queria o primeiro caracter.

palavra1.charAt(0)

e quando ele faz:

A.indexOf()

Como a variável só tem um caracter, esse método irá retornar 0 ou -1.

Resumindo: Não há varredura da String.

Hum.
Entendi.
Você tem realmente tem razão.

Lembrando que o startsWith() só está disponivel a partir do Java 1.6 …

Muito bem observado.