По определению, этот примитивный литерал имеет тип int. Любой числовой литерал без десятичной точки имеет тип int , если только вы не введете в него значение l / L: 1L
, чтобы превратить его в длинную. Там нет 1 "байта" литерала, вам нужно идти (byte) 1
, чтобы добраться туда.
Компилятор ищет лучшее соответствие и использует тот метод, который принимает int.
Это все, что нужно для этого. Если вы хотите, чтобы другие методы вызывались, либо приведите значение к (long), например, либо начните использовать значения, такие как 1.0 вместо 1.
Относительно вашего комментария: автоматизм включается только при необходимости. Но в вашем случае: A) вы используете int значение B) есть метод взятия int. Компилятор не превращает целые числа в длинные в двойники без причины!