2012-04-19 17 views
5

Tôi nhầm lẫn là lý do lớp Java Point nhận hai tham số int và phương thức getX() và getY() trả về gấp đôi. Ví dụ tôi có thể xác định một điểmĐiểm Java, sự khác biệt giữa getX() và point.x

Point p = new Point(4,6); 

Nếu tôi được gọi ..

p.getX(); 

Nó sẽ trở lại 4.0. và nếu tôi được gọi

p.x; 

tôi sẽ nhận được 4.

Bất kỳ lý do cho việc này?

+3

Chủ yếu, đó là do tính tương thích ngược và thực tế là 'Điểm' đã bị tấn công cùng nhau trong một khoảng thời gian tương đối dài. –

Trả lời

3

Point2D.DoublePoint2D.Float các lớp mở rộng Point2D là một lớp bậc trên của Point và chúng cần để có thể làm việc với các giá trị dấu phẩy động. Lưu ý rằng cũng có một số setLocation(double, double).

Point2D là một lớp trừu tượng mà thực hiện việc tính toán khoảng cách cho điểm, và setLocation, getX, và getY là phương pháp trừu tượng của nó, đó là lý do tại sao tất cả họ đều sử dụng doubles và tại sao Point có để thực hiện chúng với double s trong chữ ký.

+0

Ngẫu nhiên cách bạn phải khởi tạo cả x và y thành int, nhưng sau đó có thể đặt vị trí của x và y để tăng gấp đôi. –

+0

'setLocation' trong lớp' Point' sẽ làm tròn nó thành các số nguyên gần nhất, vì vậy một 'điểm' luôn có toạ độ nguyên. – trutheality