2012-04-19 7 views
5

Sono confuso al perché la classe Java Point accetta due parametri int e i metodi getX() e getY() restituiscono i doppi. Per esempio potrei definire un puntoPunto Java, differenza tra getX() e point.x

Point p = new Point(4,6); 

Se dovessi chiamare ..

p.getX(); 

Sarebbe tornare 4.0. e se dovessi chiamare

p.x; 

vorrei avere 4.

Qual è il motivo di questo?

+3

Principalmente, è a causa della retrocompatibilità e del fatto che 'Point' è stato violato per un periodo relativamente lungo. –

risposta

3

Ci sono Point2D.Double e Point2D.Float classi che estendono Point2D che è una superclasse di Point e devono essere in grado di lavorare con i valori in virgola mobile. Si noti che esiste anche un setLocation(double, double).

Point2D è una classe astratta che implementa il calcolo della distanza per i punti, e setLocation, getX e getY sono i suoi metodi astratti, che è il motivo per cui tutti usano doubles e perché Point deve attuarli con double s nella firma.

+0

Strano come è necessario inizializzare sia xey che interi, ma poi può impostare la posizione di xey su doubles. –

+0

'setLocation' nella classe' Point' la arrotonda agli interi più vicini, quindi un punto ha sempre coordinate intere. – trutheality