long
- это примитивный тип, а Long
- это тип long
в штучной упаковке.После того, как функция автобокса выпущена в Java, примитив long
может быть автоматически преобразован в Long
, который является объектом.
Но иногда это также создает проблему.Например, приведенный ниже код ужасно медленный:
public static void main(String[] args)
{
Long sum = 0L;
for(long i=0; i < Integer.MAX_VAL; i++){
sum+=i;
}
}
Это потому, что программа непреднамеренно создала 2 ^ 31 объектов без необходимости из-за прописной буквы L в объявлении sum
.