问题: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 生成】
new Point()
最终执行完的结果是一个坐标(0,0),请问这样的写法是为了给坐标一个初始值吗?是的,new Point()
的构造方法会调用 this(0)
,然后 this(0)
又会调用 this(x, 0)
,最终实际初始化一个坐标为 (0, 0)
的对象。
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。
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的值。
最后一个就只是创建个匿名对象,不使用这个对象