这个点板=新点[10]是点的新实例吗



我有这个练习,他们问我创建了多少个Point实例,他们回答14,但我数13,因为我不把板算作实例。是吗?为什么?因为对我来说,我们创建了一个有10个点大小的新板,但我们没有实例,因为我们需要一个x和一个y来做"否"?

public class Point {

private double x, y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public Point addition(Point p) {
return new Point(x + p.x, y + p.y);
}
public String toString() {
return "Point [x=" + x + " , y=" + y + "]";
}
}
public class Test {

public static void main(String[] args) {
Point p = new Point(1, 1);
Point[] board = new Point[10];

for (int i = 0; i < 6; i++)
tab[i] = p.addition(new Point(i, 1));

System.out.println(p);
Point p2 = p;
p2 = p.addition(tab[0]);
System.out.println(p + " " + p2);
}
}

是的,您的逻辑是正确的。board(Point的数组(的创建不涉及创建任何Point实例。它只是一个数组。

但代码中创建了14个Point实例:

  1. 在第3行创建(new Point (1 ,1)(
  2. 其中六个在for循环中创建,另外六个在addition方法调用中创建
  3. 一个位于第9行(在addition方法内部(

我想你错过了最后一个:(

请参阅下面的代码,它被创建了14次。我添加了一个静态方法和静态对象来计算对象的数量。此外,您可以将调试点放在构造函数中,并检查您自己,它是如何被调用的。

public class Point
{
private double x, y;
private static int objectCount;//Counter to keep track of objects
public  static int getObjectCount()
{
return objectCount;
}
public Point(double x, double y)
{
this.x = x;
this.y = y;
objectCount++;
}
public Point addition(Point p)
{
return new Point (x + p.x, y + p.y );
}
public String toString()
{
return "Point [x=" + x + " , y=" + y + "]";
}
}

更改测试类别以在不同阶段打印此计数

public class Test
{
public static void main(String[] args)
{
Point p = new Point(1, 1);
System.out.println("No of Objects created after new Point(1, 1) = " + Point.getObjectCount());
Point[] board = new Point[10];
for (int i = 0; i < 6; i++)
board[i] = p.addition(new Point(i, 1));
System.out.println("No of Objects created after  for loop  = " + Point.getObjectCount());
System.out.println(p);
Point p2 = p;
p2 = p.addition(board[0]);
System.out.println("No of Objects created after  p.addition(board[0]) = " + Point.getObjectCount());
System.out.println(p + " " + p2);
}
}

O/p是

No of Objects created after new Point(1, 1) = 1
No of Objects created after  for loop  = 13
Point [x=1.0 , y=1.0]
No of Objects created after  p.addition(board[0]) = 14
Point [x=1.0 , y=1.0] Point [x=2.0 , y=3.0]

最新更新