我想你错过了最后一个:(
我有这个练习,他们问我创建了多少个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
实例:
- 在第3行创建(
new Point (1 ,1)
( - 其中六个在for循环中创建,另外六个在
addition
方法调用中创建 - 一个位于第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]