Erro:Comparando 2 Strings

Olá, gente mais uma vez.

Estou com um problema, estou tentando comparar 2 Strings e da erro quando uso equals();

public boolean GolpeAnterior(String golpe, String golpeanterior) {
		String a = golpeanterior;
		String b = golpe;
		if (a.equals(b)){
			System.out.println("metodo true");
			return true;
		}else{
			System.out.println("metodo false");
			return false;
		}
	}

O erro:

Exception in thread "Thread-0" java.lang.NullPointerException
	at enviaThread.GolpeAnterior(enviaThread.java:138)
	at enviaThread.validaGolpe(enviaThread.java:58)
	at enviaThread.Golpe(enviaThread.java:34)
	at enviaThread.run(enviaThread.java:19)
	at java.lang.Thread.run(Unknown Source)

[quote=Bel]Olá, gente mais uma vez.

Estou com um problema, estou tentando comparar 2 Strings e da erro quando uso equals();

public boolean GolpeAnterior(String golpe, String golpeanterior) {
		String a = golpeanterior;
		String b = golpe;
		if (a.equals(b)){
			System.out.println("metodo true");
			return true;
		}else{
			System.out.println("metodo false");
			return false;
		}
	}

O erro:

Exception in thread "Thread-0" java.lang.NullPointerException
	at enviaThread.GolpeAnterior(enviaThread.java:138)
	at enviaThread.validaGolpe(enviaThread.java:58)
	at enviaThread.Golpe(enviaThread.java:34)
	at enviaThread.run(enviaThread.java:19)
	at java.lang.Thread.run(Unknown Source)

[/quote]

Bom eu não sei onde tá o erro, mas pq vc não compara diretamente as strings?

public boolean GolpeAnterior(String golpe, String golpeanterior) {		
		if (golpe.equals(goldpeanterior)){
			System.out.println("metodo true");
			return true;
		}else{
			System.out.println("metodo false");
			return false;
		}
	}

Outra duvida de iniciante.

Se eu tenho.

String x = “AB”
String y = “BC”

Eu poderia dps fazer x=y; ?Assim x não seria mais “AB” e sim “BC”, poderia?

[quote=Bel]Outra duvida de iniciante.

Se eu tenho.

String x = “AB”
String y = “BC”

Eu poderia dps fazer x=y; ?Assim x não seria mais “AB” e sim “BC”, poderia?[/quote]
Poderia. x seria uma referência para a String “AB”.

Sobre o primeiro erro.
Você pode, como falou o colega aí acima, usar somente o equals. Fica mais simples. Mas se quiser fazer com o método, eu acredito que o erro possa estar na chamada.
Quem sabe você está chamando ele (o método) usando um variável de referência não instanciada (i.e., nula - o que ocasiona a NullPointerException). Se você passar o trecho de código onde você chama o método pode ficar mais fácil de verificar aonde pode estar o problema.

Abraço.

Bel, para comparar Strings o ideal é o método equals(). Strings não são primitivos, elas são Objetos portanto elas são um endereço de memória, quando vc faz x=y vc atribui a x o endereço de memória de Y, e faz com que o Garbage Collector mate o endereço X. Fique atenta a isso pois troca de referencia custa memória e processamento.

Espero ter ajudado.