Java连续调用构造方法,基础语法问题

问题:1. new Point()最终执行完结果是一个(0,0)的坐标,这样写的意义就是给个初值吗?
2. 输出语句中new Point(5).y是什么意思?这是什么语法?为什么输出结果就是一个0,也不是坐标形式?
3.最后的new Point(5,6)是创建一个点,然后也不输出,就这样?那这样写有什么用


public class Point {
    int x,y;
    public Point()
    {
        this(0);
    }
    public Point(int x)
    {
        this(x,0);
    }
    public Point(int x,int y)
    {
        this.x=x;
        this.y=y;
    }
    public static void main(String[] args) {
        new Point();
        System.out.println(new Point(5).y);
        new Point(5,6);
    }

}

【以下回答由 GPT 生成】

问题解答

1. new Point() 最终执行完的结果是一个坐标(0,0),请问这样的写法是为了给坐标一个初始值吗?

是的,new Point() 的构造方法会调用 this(0),然后 this(0) 又会调用 this(x, 0),最终实际初始化一个坐标为 (0, 0) 的对象。

2. 在输出语句中,new Point(5).y 是什么意思?这是什么语法?为什么输出结果是0而不是一个坐标?

new Point(5) 创建了一个 x 坐标为 5 的 Point 对象。而 new Point(5).y 是指这个 Point 对象的 y 值。这使用了方法链调用的语法,先调用构造方法 new Point(5) 创建对象,然后该对象的属性 y 被访问输出。

在构造方法 new Point(int x) 中,由于没有为 y 指定值,默认值为 0。因此,当我们只传入 x 的参数时,y 的值就是默认值 0。所以输出结果是 0。

3. 最后的 new Point(5,6) 是创建一个点,为什么没有输出结果?这样的写法有什么用处?

new Point(5, 6) 会创建一个 x 坐标为 5,y 坐标为 6 的 Point 对象。虽然代码中没有输出结果,但其实在执行 new Point(5,6); 的时候仍然创建了一个对象并占用了内存。

这样的写法有用处,例如当我们只需创建一个对象并对其进行操作,而不需要显示该对象的某些属性或结果时,我们可以使用这种写法。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

1
new Point();
相当于
Point p1;
p1 = new Point();
2
System.out.println(new Point(5).y);
相当于
Point p2 = new Point(5);
System.out.println(p2.y);
3
new Point(5,6);
相当于
Point p3 = new Point(5,6);
就你的代码说,1、3行都是没用的
但如果说构造函数里加上一个输出,就能看到效果了。

这种构造方法的重载是为了方便使用,默认构造方法是为了给默认值,带参数的构造方法是给指定的的属性设置值。
new Point(5).y这个相当于Point p =new Point(5);然后再通过p.y去取y的值。
最后一个就只是创建个匿名对象,不使用这个对象