Имеет ли значение случай Java IntegerTypeSuffix?
Как утверждается здесь, размещение L
после целочисленной константы превращает его в Long
объект при использовании l
якобы превратить его в примитивного коллегу long
, но Oracle утверждает здесь, что "целочисленный литерал имеет тип long
если к нему добавляется буква ASCII L
или же l
".
Так что первый придумывает, или второй лжет мне?
И если Oracle лжет мне, будет ли разница в памяти и / или производительности Long
против long
когда-нибудь на самом деле имеет значение или даже быть обнаружимым?
Другими словами, имеет ли значение случай Java IntegerTypeSuffix?
2 ответа
Размещение суффикса l
или же L
в конце числовой литерал указывает на long
буквально, а не Long
объект.
Раздел 3.10.1 JLS определяет тип данных числового литерала с l
или же L
суффикс:
Целочисленный литерал имеет тип long, если к нему добавляется буква ASCII L или l (ell); в противном случае он имеет тип int (§4.2.1).
Тип может иметь значение при указании литералов большого количества, которые слишком велики для int
буквальный.
// 10 billion is illegal; too big to fit in an int,
// even if later assigned to a long
long tooBigInt = 10000000000;
// 10 billion here is a legal long literal
long justRight = 10000000000L;
Нет, это не так. L обычно выбирают, так как l можно принять за 1.
Кажется, что ответ, на который вы ссылаетесь, имеет недостаток.