但还是不太懂
class Point
{
double x;
dobule y;
double z;
public Point(double x,double y,double z)
{
this.x = x;
this.y = y;
this.z = z;
}
public double getDistance(Point p)
{
return Math.sqrt((x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z -p.z)(z - p.z))
}
}
public class DemoPoint2
{
public static void main(String[] args)
{
①Point p = new Point(3,2,4);
Point p1 = new Point(5,23,2);
②p.getDistance(p1);
}
}
程序运行②的时候,调用getDistance()方法,内存是这样处理的:
在Stack空间创造一个Point类型的变量p(与第①个的p不一样),并且把p1的引用copy给它,也就是说,p可以调用p1的对象,然后,进入运算(x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z -p.z)(z - p.z)),问题来了:这里的p.x,p.y,p.z我能理解,其分别p1.x,p1.y.p1.z;但是对于x,y,z的理解,我只能用:因为是用①这个p这个引用进行方法调用的,所以这里的x,y,z就是p所引用对象的具体值:3,2,4;我这样理解感觉不太紧密,有什么好方法让我理解下,至少在内存分析里面弄个指向出来也好。
class Point
{
double x;
dobule y;
double z;
public Point(double x,double y,double z)
{
this.x = x;
this.y = y;
this.z = z;
}
public double getDistance(Point p)
{
return Math.sqrt((x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z -p.z)(z - p.z))
}
}
public class DemoPoint2
{
public static void main(String[] args)
{
①Point p = new Point(3,2,4);
Point p1 = new Point(5,23,2);
②p.getDistance(p1);
}
}
程序运行②的时候,调用getDistance()方法,内存是这样处理的:
在Stack空间创造一个Point类型的变量p(与第①个的p不一样),并且把p1的引用copy给它,也就是说,p可以调用p1的对象,然后,进入运算(x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z -p.z)(z - p.z)),问题来了:这里的p.x,p.y,p.z我能理解,其分别p1.x,p1.y.p1.z;但是对于x,y,z的理解,我只能用:因为是用①这个p这个引用进行方法调用的,所以这里的x,y,z就是p所引用对象的具体值:3,2,4;我这样理解感觉不太紧密,有什么好方法让我理解下,至少在内存分析里面弄个指向出来也好。