Though I’m trying to understand why “this” is needed, I’m very confused about its purpose. For instance, I coded the following:
public static void main (String args[])
{
SandboxClass1 temp = new SandboxClass1(1,2,3);
System.out.println(temp.getX());
System.out.println(temp.getY());
System.out.println(temp.getZ());
System.out.println("----------------------------");
SandboxClass1 temp2 = new SandboxClass1(4,5,6);
System.out.println(temp2.getX());
System.out.println(temp2.getY());
System.out.println(temp2.getZ());
}
public class SandboxClass1
{
private int x = 1;
private int y = 1;
private int z = 0;
public SandboxClass1(int x, int y, int zz)
{
this.x = x;
this.y = y;
z = zz;
}
public int getX()
{
return(this.x);
}
public int getY()
{
return(this.y);
}
public int getZ()
{
return(this.z);
}
}
Why do I need to code “this.z = zz”
when I could just as well write, “z = zz”?
In your SandboxClass1 constructor, you have two pairs of variables each called x and y. There’s the x and y declared on the object itself (“private int x = 1”), and the separate x and y that are parameters to the constructor (“int x”).
The local (parameter) variable shadows the class variable. So if in the constructor you just did
the assignment would have no effect.
The keyword
thisis a reference to the object that the method/constructor was called on. In the statementyou’re using it to assign to the other x at class level. By qualifying the name, you can tell them apart.
It’s not necessary to use
thiswith the z/zz assignment because they have different names.It’s also not necessary in the getX/Y/Z methods because there are no local variables in those methods shadowing the relevant class variables. It does no harm though.