Dlaczego tak
Liczba 3 000 000 000 przekracza zakres typu int, dlatego literał oznacza się przyrostkiem L jako long i może on trafić do zmiennej long. Literał 3.14 jest w Javie typu double, a przypisanie go do float bez przyrostka f (3.14f) kompilator odrzuca jako zawężenie typu z możliwą utratą danych. Z tego samego powodu nie można przypisać 2.5 do int, a "A" jest łańcuchem String, a nie znakiem 'A'.