Treinando lógica [RESOLVIDO]

5 respostas
T

Pessoal, tudo bem?

Estou estudando a linguagem JAVA e ainda estou bem no comecinho. Muito bom ter achado esse fórum para compartilhar as dúvidas e aprender mais!

Vamos lá:

No exercício que estou fazendo ele cria a seguinte classe e seu respectivo método construtor:

public class Box2 {
	int x1 = 0;
	int y1 = 0;
	int x2 = 0;
	int y2 = 0;
	
	Box2(int x1, int y1, int x2, int y2){
		this.x1 = x1;
		this.y1 = y1;
		this.x2 = x2;
		this.y2 = y2;
	}

Até aí tudo bem. A minha dúvida é: por que this.x1 = x1; é diferente de x1=this.x1;?

Poderiam me ajudar a entender a diferença para o JAVA nessas informações?

Abraços a todos!

5 Respostas

rafadelnero

Olá Tiago, a diferença é que o ‘ponteiro’ this, referencia a própria instância da classe, ou seja, se você não usar o ponteiro this, o parâmetro passado vai ser usado, se usar this, significa que você está apontando para o seu atributo.

lucasvvasconcelos

Exatamente this é a referência :slight_smile:

T

Mas o this deve estar antes da igualdade?

Porque na segunda equação ele continua presente, porém, depois do sinal de igualdade.

ViniGodoy

Primeiro de tudo. Lembre-se que em Java, um único sinal de = significa atribuição, não igualdade. A igualdade é expressa por ==

Observe que naquela função existem 2 x1:

O x1 que foi criado dentro da classe Box2, na linha 02 do seu código.

public class Box2 { int x1 = 0;

E o x1 que você recebeu como parâmetro, na entrada da função:

Box2(int x1

Quando você usa this, você está se referindo ao primeiro x1. Se você não usar o this, estará se referindo ao parâmetro.

Portanto:

this.x1 = x1;

Significa atribuir ao valor de x1 da classe Box2 o valor de x1 recebido por parâmetro. Já:

x1 = this.x1;

Significa atribuir ao valor recebido por parâmetro o valor de x1. Como x1 ainda não foi inicializado no construtor, isso irá atribuir 0 ao parâmetro local da função, e deixar x1 inalterado. Essa operação não faz muito sentido.

Vale ressaltar que o uso do this só é obrigatório se houver essa duplicidade de nomes. Numa função onde não há, usar x1 sem this irá se referir ao x1 da classe Box2.

T

Excelente. Muito obrigado.

rafadelnero, agora entendi também o que você quis dizer.

Criado 20 de julho de 2014
Ultima resposta 24 de jul. de 2014
Respostas 5
Participantes 4