Разница между ключевым словом и литералом в Java - PullRequest
4 голосов
/ 17 декабря 2011

Я новичок в Java, читал книгу и наткнулся на следующие строки:

"Литералы true, false и null строчные, а не прописные, как в языке C ++. Строгоговоря, это не ключевые слова, а литералы. "

почему это литералы, и какие требования необходимы для того, чтобы некоторые ключевые слова назывались литералами ..?

Ответы [ 4 ]

6 голосов
/ 17 декабря 2011

Ключевые слова - это слова, которые используются как часть структуры кода, например for или while. Они изменяют способ, которым компилятор обрабатывает блок кода, например for указывает компилятору повторно выполнять код в указанной области, пока не будет достигнуто заданное условие выхода. Ключевое слово class говорит компилятору обрабатывать все в указанной области как часть определенного класса. Имена ключевых слов ограничены, поэтому вы не можете использовать их в качестве имен переменных.

Литералы типа true, false и null являются значениями, которые могут быть назначены, но их имена ограничены так же, как и ключевые слова, т.е. вы не можете иметь переменную с именем true или for. Они формируют части выражений, но не меняют способ обработки кода компилятором.

5 голосов
/ 17 декабря 2011

true, false и null являются выражениями.Они обозначают специальные встроенные значения, поэтому считаются литералами (наряду с более традиционными литералами, такими как 123 и "xyz").

for, if, class и т. Д. Являются ключевыми словами.Они передают ваши объявления и операторы компилятору, но они не представляют значения.Вот почему они не являются литералами .

0 голосов
/ 24 сентября 2014

Литералы - это символы, а идентификаторы - это ключевые слова.

Ну, нет, но пример может помочь:

12, 1e3, 0x4a, 'a', "Hello \ n" - литералы _debug, n, stdio, main, argc,printf - идентификаторы

0 голосов
/ 18 декабря 2011

Ключевые слова определены в Спецификации языка Java # 3.9 . «Истина» не среди них. Литералы определены в # 3.10, и они включают «true». Текст этих разделов полностью отвечает на ваш вопрос.

...