В задаче есть такой код:
public class Solution {
    public static void main(String[] args) {
        print(1);
    }

    public static void print(byte b) {
        System.out.println("Я буду Java прогером!");
    }

    public static void print(double d) {
        System.out.println("Я буду Java прогером!");
    }

    public static void print(long l) {
        System.out.println("Я буду Java прогером!");
    }

    public static void print(float f) {
        System.out.println("Я буду Java прогером!");
    }

    public static void print(char c) {
        System.out.println("Я буду Java прогером!");
    }
}
И такое условие: Посмотри на реализации метода print() в коде и определи, какой из них будет вызван. Удали все лишние реализации метода print(). Я так понимаю, что мы можем использовать метод с double и long. Судя по всему, нет разницы. На картинке ниже указано автоматическое преобразование примитивных типов. Все, что прямой линией без пунктира - преобразование без потери точности. Т.е. int без потери точности можно преобразовать к double. Однако решение принимает только с методом long. Почему?