第三章—TestCircle程序分析

执行中的 Circle c1 = new Circle(new PointCircle(1.0, 2.0), 2.0);
new PointCircle(1.0, 2.0)代码时
在这里插入图片描述

当构造方法执行完毕以后
在这里插入图片描述

Circle c1 = new Circle(new PointCircle(1.0, 2.0), 2.0);执行中的图
在这里插入图片描述

P的值赋值给o所以o指引向p引用的对象
下面的构造方法执行完毕后
Circle(PointCircle p, double r) {
o = p;
radius = r;
}在这里插入图片描述

因此c1指向堆内存这个对象
在这里插入图片描述

执行new Circle(5.0)时,肯定有一个点的所以堆内存里有一个o
执行完这个代码之后Circle c2 = new Circle(5.0); 如下
在这里插入图片描述

当构造方法完成之后
Circle(double r) {
o = new PointCircle(0.0, 0.0);
radius = r;
}
在这里插入图片描述

执行代码System.out.println(“c1:(” + c1.getO().getX() + “,” + c1.getO().getY() + “),” + c1.getRadius());中的 c1.getO().
返回的是自身的小o(小o里面的内容),返回值会存在临时的内存区域,这个区域叫什么名字不去管,返回的值和o是一样的所以和o的指向是相同的
在这里插入图片描述

getX()为调用的是PointCircle对象的getX方法,它也是一个返回值,它不是一个引用类型是一个普通类型所以在栈内存中,1.0没有名字,它是通过(c1.getO().getX())拿到值,然后和"c1:("拼接在一起
在这里插入图片描述

当打印完System.out.println(“c1:(” + c1.getO().getX() + “,” + c1.getO().getY() + “),” + c1.getRadius());以后内存自动消失
在这里插入图片描述

执行这个代码c1.setO(5, 6);
调用了c1的小o对象然后对小o调用了setX方法
在这里插入图片描述

所有的方法是针对某一个对象来调用

弄清楚了内存就是弄清楚了一切

在这里插入图片描述
是Cricle类的一个方法

当确定一个方法的时候有三个问题需要确定

1.方法的名字
2.方法的参数
3.方法的返回值

包不包含某个点那么就是传一个点进去

是否包含一个点,返回值类型为布尔类型

执行代码 PointCircle p1 = new PointCircle(5.2, 6.3);在这里插入图片描述

执行完 boolean contains(PointCircle p) 以后
在这里插入图片描述

double x = p.getX() - o.getX();
减去c1的小o
执行完后有返回值
boolean contains(PointCircle p) {
double x = p.getX() - o.getX();
double y = p.getY() - o.getY();
if (x * x + y * y > radius * radius)
return false;
else
return true;
}
在这里插入图片描述>

打印完返回值之后
在这里插入图片描述

发布了76 篇原创文章 · 获赞 1 · 访问量 7060

猜你喜欢

转载自blog.csdn.net/weixin_42814000/article/details/104753129