關於程式:
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為斜邊,構造直角三角形,使其兩直角邊分別與座標軸平行,利用勾股定理可得。在學習過程中,不僅僅知道點座標求距離,同時更需要將某個平方和看作兩點間的...