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);
    }}
 
    