Я пытался понять, почему C ++ сводит меня с ума, набирая NULL
. Внезапно это поражает меня на днях; Я набираю null
(строчные буквы) на Java в течение многих лет. Теперь я вдруг программирую на C ++, и этот маленький кусок мышечной памяти сводит меня с ума.
Wikiperipatetic определяет C ++ NULL как часть stddef:
Макрос, который расширяется до нулевого указателя
постоянная. Это может быть определено как
((void *) 0), 0 или 0L в зависимости от
Компилятор и язык.
Документация Sun говорит мне об «нулевом литерале» Java:
Нулевой тип имеет одно значение, нуль
ссылка, представленная буквальным
нуль, который формируется из ASCII
персонажи. Нулевой литерал всегда
нулевого типа.
Так что все это очень мило. Я знаю, что такое ссылка на нулевой указатель, и спасибо за примечания компилятора. Теперь я немного размышляю над идеей литерала в Java, поэтому я продолжаю читать ...
Литерал - это исходный код
представление фиксированного значения;
литералы представлены непосредственно в
ваш код без необходимости
вычисление.
Там также есть специальный нулевой литерал
которые могут быть использованы в качестве значения для любого
ссылочный тип. нуль может быть назначен
к любой переменной, кроме переменных
примитивные типы. Там мало тебя
может сделать с нулевым значением за пределами
проверка на его наличие. Следовательно,
Нуль часто используется в программах как
маркер, указывающий, что какой-то объект
нет. * * тысяча двадцать-две
Хорошо, так что я думаю, я понял это сейчас. В C ++ NULL - это макрос, который при компиляции оценивается как константа нулевого указателя. В Java null - это фиксированное значение, которое может быть назначено любому не примитиву; отлично подходит для тестирования в удобном if statement
.
В Java нет указателей, поэтому я понимаю, почему они держали нулевое простое значение, а не что-нибудь необычное. Но почему Java решила изменить все заглавные буквы NULL
на null
?
Кроме того, я что-то здесь упускаю?