Имеет ли значение случай 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.

Кажется, что ответ, на который вы ссылаетесь, имеет недостаток.

Другие вопросы по тегам