Finding nearest points and points within a radius
Bug

The internalPoints method has a bug:
you count the number of points that fall within the radius,
but then, instead of adding those points in the output array,
you take the first N points of the input array,
some of which may not be within the radius.
Try for example with this input:

Point[] points = {
        new Point(1, 2),
        new Point(19, 29),
        new Point(2, 3),
        new Point(5, 2)
};


Comparing distances

Do you really need to compare \$\sqrt{dx^2 + dy^2}\$ ?
Computing the square root can be expensive,
and comparing \$dx^2 + dy^2\$ would be enough.

public double dsquare(Point p) {
    double dx = p.x - this.x;
    double dy = p.y - this.y;
    return dx * dx + dy * dy;
}


Finding the nearest point

In this loop, the distance between point and the nearest point may be repeatedly recalculated:


Point p = points[0];
for (int i = 0; i &lt; points.length; i++) {
    if (points[i].distance(point) &lt; p.distance(point)) {
        p = points[i];
    }
}
return p;



You could save the known nearest distance in a variable to avoid repeated computations. Also, you could start iterating from i = 1 instead of i = 0:

Point nearest = points[0];
double nearestDistance = point.dsquare(nearest);
for (int i = 1; i &lt; points.length; i++) {
    double distance = points[i].dsquare(point);
    if (distance &lt; nearestDistance) {
        nearest = points[i];
        nearestDistance = distance;
    }
}
return nearest;


Simplify

The s variable in toString is pointless, you could directly return the concatenated value.