Число Java L (длинная) спецификация

Вы можете определить свою собственную функцию для сокращения кода, и это также хорошо для повторного использования:

def create_dir(name):
    try:
        os.makedirs(name)
    except FileExistsError:
        pass

def fileSort(day, month, year, file):
    global filewritten
    create_dir(togoto + '/' + year)
    create_dir(togoto + '/' + year + '/' + month)
    create_dir(togoto + '/' + year + '/' + month + '/' + day)
    try:
        shutil.move(path + '/' + file, togoto + '/' + year + '/' + month + '/' + day + '/' + file)
        filewritten += 1
    except FileExistsError:
        pass
91
задан azro 4 November 2018 в 16:17
поделиться

5 ответов

Существуют специальные суффиксы для long (например, 39832L ), float (например, 2.4f ) и double (например, -7.832d ).

Если суффикса нет, и это интегральный тип (например, 5623 ), предполагается, что он int . Если это не целочисленный тип (например, 3.14159 ), предполагается, что он равен double .

Во всех других случаях ( байт , ] short , char ), вам нужен приведение, так как нет конкретного суффикса.

Спецификация Java допускает как суффиксы верхнего, так и нижнего регистра, но версия верхнего регистра для длинны s является предпочтительным,

167
ответ дан 24 November 2019 в 06:45
поделиться

Я надеюсь, что вы не возражаете против небольшой касательной, но подумал, что вам может быть интересно узнать это помимо F (для поплавка), D (для двойного) и L (для длинного), было сделано предложение добавить суффиксы для байтов и коротких - Y и S соответственно. Это исключило бы необходимость преобразования в байты при использовании литерального синтаксиса для байтовых (или коротких) массивов. Цитирую пример из предложения:

ОСНОВНАЯ ВЫГОДА: Почему платформа лучше, если предложение будет принято?

грубый код, например

  byte [] stuff = {0x00, 0x7F, (byte) 0x80, (byte) 0xFF};

может быть перекодирован как

  byte [] ufum7 = {0x00y, 0x7Fy, 0x80y, 0xFFy};

Джо Дарси наблюдает за Project Coin для Java 7, и его блог был простым способом отследить эти предложения.

13
ответ дан 24 November 2019 в 06:45
поделиться

Это литералы и описаны в разделе 3.10 спецификации языка Java.

8
ответ дан 24 November 2019 в 06:45
поделиться

Рассмотрим:

long l = -1 >>> 1;

против

int a = -1;
long l = a >>> 1;

Теперь вы ожидаете, что беспокойные фрагменты кода будут давать одинаковое значение переменной л . Поэтому нам нужно, чтобы выражение для литералов int было выполнено как int s.

0
ответ дан 24 November 2019 в 06:45
поделиться

Кажется, это было бы хорошо есть, потому что (я предполагаю), если бы вы могли укажите номер, который вы вводите в короткий, то Java не придется бросьте его

Так как синтаксический анализ литералов происходит во время компиляции, это абсолютно не имеет отношения к производительности. Единственная причина, по которой было бы неплохо иметь короткие короткие и байтовые суффиксы , заключается в том, что это приводит к более компактному коду.

1
ответ дан 24 November 2019 в 06:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: