Историческое превью:
Так уж повелось, что Long и long - совершенно разные вещи с абсолютно разным поведением. Ну всякие там возможности/невозможности хранить null-значения, корректность сравнения через оператор == и т.п. В java 1.5 появилась такая фича как автобоксинг. То есть теперь свободно можно писать нечто в стиле:
Long l = 4L; if (l != 10L) {...}
В то время как раньше приходилось пользовать такой код:
Long l = new Long(4L); if (l.longValue() != 10L) {...}
По сути, автобоксинг - автоматическое преобразование между классами и примитивными типами. Работает как в одну, так и в другую сторону.