Erro na compilação pq?

pessoal ola isso so da acesso NEGADO. pq?

[code]
import javax.swing.JOptionPane;
public class Gerente extends Funcionario
{
String senha = “123”;

 public double getBonifica()
 {
	 return this.salario * 0.15 + this.salario;
 }



Gerente(double salario) 
 {
	super(salario);
	
}


public boolean autentica()
{
	 
	String senhax = JOptionPane.showInputDialog(null,"ENTRA COM SUA SENHA: ");
	
	
	
	
	
	if(this.senha == senhax)
	{
		JOptionPane.showMessageDialog(null,"ACESSO PERMITIDO!","INFORMAÇÕES DO SISTEMA!",JOptionPane.INFORMATION_MESSAGE);
		System.exit(0);
		setAddNome("");
		setAddRg("");
		setAddCpf("");
		setAddIdade(1);
		setDataDeEntrada("");
		setAddDepartamento("");
		getBonifica();
		mostra();
		return true;
	}
	else
	{
		JOptionPane.showMessageDialog(null, "ACESSO NEGADO!","INFORMAÇÕES DO SISTEMA!",JOptionPane.ERROR_MESSAGE);
		return false;
	}
}

}[/code]

mesmo se eu digitar 123 da acesso negado, ja tentei um milhao de veses e nao consigo ter acesso, so se eu declarar ja o valor da variavel antes do escopo do if()… Me ajuda alguem pls.

Pra começar isso não é erro nenhum na compilação.

O erro está nesta linha:

 if(this.senha == senhax)  

A comparação de Strings deve ser feita usando o equals:

 if(this.senha.equals(senhax))  

pm… eu disconfiava que o erro tava ai mesmo, mais me explica uma coisa pq eu nao uso uma comparação == ja que estou usando um if()?

O == utiliza-se com tipos nativos: int, float, double,…

Para comparar objectos utiliza-se o equals porque queremos comparar o conteúdo do objecto, neste caso o conteúdo da String.
Ao comparar com == é comparado o objecto e não o seu conteúdo. Ou seja, há dois objectos String com o mesmo conteúdo mas que para todos os efeitos são objectos diferentes.

entao sempre quando eu quizer comparar uma String com a outra eu sempre devo uzar o equals?

Sim.

Entendido,vlw pessoal pela ajuda de vcs. Abraços