Treinando lógica [RESOLVIDO]

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!

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.

Exatamente this é a referência :slight_smile:

Mas o this deve estar antes da igualdade?

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

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.

Excelente. Muito obrigado.

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