Я вижу int и float -
drawString(AttributedCharacterIterator iterator, float x, float y)
Renders the text of the specified iterator, using the Graphics2D context's current Paint.
drawString(AttributedCharacterIterator iterator, int x, int y)
Renders the text of the specified iterator, using the Graphics2D context's current Paint.
Используйте float, если вам нужно больше точности, int, если позиций достаточно.
Относительно вашего второго вопроса, см. Ниже, который был описан / ответил следующим образом: Прямоугольник и Различие Rectangle2D :
Прямоугольник использует координаты int. Rectangle2D - абстрактный класс, который не заботится о том, используете ли вы int, double или float.
Если вам нужна большая точность double и float, вам придется использовать Rectangle2D.
Rectangle2D является базовым классом, поэтому, если вы пишете код, который работает с прямоугольными формами абстрактным образом, перейдите к Rectangle2D и присвойте его следующим образом:
Rectangle2D rect = new Rectangle2D.Double(double, double, double, double);
или
Rectangle2D rect = new Rectangle(int, int, int, int)
Если вы знаете, что имеете дело только с целыми числами, вы можете использовать Rectangle полностью.
Вы можете сказать, что Rectangle должен называться Rectangle2D.Integer. Но это не совсем так, потому что, например, Прямоугольник - единственный из трех, который реализует сериализуемый интерфейс.
Как прокомментировал skaffman, это немного устаревшая проблема.