首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个Point board = Point[10]是Point的一个新实例吗?

这个Point board = Point[10]是Point的一个新实例吗?
EN

Stack Overflow用户
提问于 2020-12-26 21:34:47
回答 2查看 68关注 0票数 0

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

代码语言:javascript
复制
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);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2020-12-26 21:43:36

是的,你的逻辑是正确的。创建board (Point的数组)不需要创建任何Point实例。它只是一个数组。

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

第3行的

  1. 创建其中有6个是在addition方法调用中创建的。
  2. One在第9行(在addition方法中)。

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

票数 2
EN

Stack Overflow用户

发布于 2020-12-26 21:58:18

请看下面的代码,它被创建了14次。我添加了一个静态方法和静态对象来计算对象的个数。另外,你可以把调试点放在构造器中,检查你自己,它是如何被调用的。

代码语言:javascript
复制
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 + "]";
    }
}

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

代码语言:javascript
复制
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是

代码语言:javascript
复制
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]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65456922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档