關於空間兩點之間距離的java程式之分析

2021-07-26 23:02:23 字數 2802 閱讀 4994

關於程式:

class point

public void getx(double _x)

public void gety(double _y)

public void getz(double _z)

public void setx(double _x)

public void sety(double _y)

public void setz(double _y)

double getdistance(point p)

}

定義了乙個point類

,具有三個

double

型別的元素

,表示空間中某乙個點

;

並且定義乙個方法,getdistance(point p),需要輸入乙個

point物件;

接下來在主程式中

class  testpoint

}

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)

針對這句:

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

的值也會被**

.

這就是以上的流程.

記憶體分析很重要.後面牽涉到 常量池和集合

,單例等等都是需要這些知識來協助掌握

.

如何計算兩點之間距離

如何計算兩點之間距離 路線規劃提供了獲取路線距離的方法,見mkrouteplan 類的 getdistance 方法。如果是計算任意兩點的距離,有兩種方法 一種利用勾股定理計算,適用於兩點距離很近的情況 一種按標準的球面大圓劣弧長度計算,適用於距離較遠的情況。static double def pi...

計算兩點間距離

匯入math包 import math 定義點的函式 class point def init self,x 0,y 0 self.x x self.y y def getx self return self.x def gety self return self.y 定義直線函式 class ge...

python兩點間的距離 巧用兩點間距離公式求最值

在平面直角座標系中,任意兩點a x1,y1 b x2,y2 的距離是ab x1 x2 y1 y2 也可以寫成ab x1 x2 y1 y2 原理很簡單,以ab為斜邊,構造直角三角形,使其兩直角邊分別與座標軸平行,利用勾股定理可得。在學習過程中,不僅僅知道點座標求距離,同時更需要將某個平方和看作兩點間的...