Can people explain why this code gives its results
public class InputTest {
public static void main(String[] args) {
Integer w = new Integer(1);
Integer x = 1;
Integer y = x;
double z = x;
System.out.println(w.equals(y));
System.out.println(w == y);
System.out.println(x == y);
System.out.println(z == w);
}}