关于空间两点之间距离的java程序之分析
来源:互联网 发布:spark 推荐算法 编辑:程序博客网 时间:2024/06/06 02:57
关于程序:
class Point
{
double x,y,z;
Point(double _x,double _y,double _z)
{
x= _x;
y=_y;
z=_z;
}
public void getX(double _x)
{
x = _x;
}
public void getY(double _y)
{
y = _y;
}
public void getZ(double _z)
{
z = _z;
}
public void setX(double _x)
{
x = _x;
}
public void setY(double _y)
{
y = _y;
}
public void setZ(double _y)
{
y = _y;
}
double getDistance(Point p)
{
return (x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z);
}
}
定义了一个Point类,具有三个double类型的元素,表示空间中某一个点;
并且定义一个方法,getDistance(Point p),需要输入一个Point对象;接下来在主程序中
class TestPoint
{
public static void main(String[] args)
{
System.out.println("Hello World!");
Point p = new Point(1.0,2.0,3.0);
Point p1 = new Point(0.0,0.0,0.0);
System.out.println(p.getDistance(p1));
p.setX(3.0);
System.out.println(p.getDistance(new Point(1.0,1.0,1.0)));
}
}
New 了名为p的Point对象;
New 了名为p1的Point对象;
要调用Point类的方法getDistance(Point p)就必须使用对象来调用!故使用p.getDistance(p1);
;运行这个方法时,因为这个方法有一个形参p,首先在栈空间中定义一个p对象p,因为输入的对象是p1,所以p的栈地址就是p1的栈地址,p的堆内存变量就是p1的堆内存变量;
然后运行语句:(x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z);
x就是调用getDistance(Point p)的p对象的x!不是上面局部变量的p对象的x!,y,z也是如此.
所以就得出了需要求出的距离的平方!!运行完这个方法后,这个方法中的局部变量就被内存回收了!所以有了这样的程序语句:p.getDistance(p1);
double getDistance(Point p)
{
return (x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z);
}
针对这句:
p.setX(3.0);
System.out.println(p.getDistance(new Point(1.0,1.0,1.0)));
首先把p对象调用setX(int _x)方法,方法中的局部变量是_x,在栈空间中顶一个_x,并且赋值为代入其中的3.0;然后执行语句:x = _x;p对象的堆空间中的x就赋值为了3.0;执行完这个方法后_x就被内存回收了;
接下来:System.out.println(p.getDistance(new Point(1.0,1.0,1.0)));
new Point(1.0,1.0,1.0);在堆空间中定义一个 对象,ta的堆内存变量为x,y,z均为1.0;代入到getDistance方法中时,需要做的是 要在栈中定义一个局部变量p,p对应的堆空间对象就是刚才的匿名的对象.局部变量的p.x就是 匿名对象的x,y就是 匿名对象的y,z就是 匿名对象的z;运行完这个方法,得到了目标的值,然后打印输出.方法运行完成后,局部变量就被回收来了,return的值也会被回收.
这就是以上的流程.
内存分析很重要.后面牵涉到 常量池和集合,单例等等都是需要这些知识来协助掌握.
- 关于空间两点之间距离的java程序之分析
- java-计算两点之间的距离
- 两点之间的距离
- 两点之间的距离
- 两点之间的距离
- 求两点之间距离程序
- 根据经纬度计算两点之间的空间距离
- 求两点之间的距离
- 求两点之间的距离
- 求两点之间的距离
- 求两点之间的距离
- 求两点之间的距离
- 计算两点之间的距离
- 计算两点之间的距离
- 获取两点之间的距离
- 计算两点之间的距离
- 4.22两点之间的距离
- 计算两点之间的距离
- EF+SQLSERVER控制并发下抢红包减余额(改进)
- hibernate基础知识一
- Android——Fragment的生命周期及其回掉方法...
- android各种优化(持续更新)——android新人
- CF389A:Fox and Number Game(简单数论)
- 关于空间两点之间距离的java程序之分析
- hibernate基础知识二
- 【java】Comparator的用法
- Qt多线程简单总结
- sprintf
- Volley的使用
- JDK中的URLConnection连接Servlet的问题
- JMS简介与ActiveMQ实战
- 【Spark你妈喊你回家吃饭-04】再说Spark底层运行机制