В чем разница между значениями и литералами? Значения, по-видимому, имеют динамический тип, а литералы, по-видимому, имеют статический тип, согласно слайду четыре первой страницы в Here. Но это не буквальная ценность?Разница между значениями и литералами
ответ
Использование терминов, используемых в этом слайд-шоу - литерал является видом контейнера, поэтому лучше сравнить значения и контейнеры.
Контейнер "содержит" значение. Если вы напишете int x=1;
, то x
- это контейнер, а номер один - значение. Но 1
также является контейнером - точнее, буквальным. Слайд-шоу подчеркивает, что существует разница между значением единицы и литералом 1
.
При кодировании вы фактически не можете получать доступ к значениям - вы можете делать это только через контейнеры. Вот почему вы можете написать x
и 1
, но не значение, которое является номером один.
Литерал - это контейнер, который можно перевести непосредственно на значение, не глядя на его окрестности - например, 1
можно перевести непосредственно на номер один. x
не может быть переведено на значение таким образом, так как это переменная, и мы не знаем, что она держит, если мы не посмотрим на окружающий код.
Что касается динамических и статических типов - контейнер имеет статический тип, известный во время компиляции. Если это переменная, это объявленный тип переменной. Если это выражение, это выведенный тип выражения. Если это буквальный, это прямой тип литерала. Компилятор может указать тип каждого контейнера без запуска программы и не заботиться о том, какие значения он будет удерживать после запуска программы.
Значение, с другой стороны, сохраняется в памяти как серия байтов. Данные типа также хранятся в памяти рядом с значением (если это не примитивное значение), поэтому типы значений являются динамическими, потому что, если вы хотите узнать, какой тип значения имеет значение, вы должны смотреть в память во время выполнения.
Хотя типы значений являются динамическими, Java является статическим языком, поскольку обычно вы не смотрите на динамический тип. Поскольку вы можете ссылаться только на значение через контейнер, статический тип контейнера используется, когда вы делаете что-то со значением.
- 1. Разница между строковыми литералами и строковыми значениями?
- 2. разница между литералами и методами класса для NSMutableArray и NSMutableDictionary
- 3. В чем разница между литералами и переменными в Python?
- 4. Разница между функциями и литералами функций в ActionScript 3?
- 5. В чем разница между типами данных и литералами в Java?
- 6. Разница между бинарными литералами GCC и C++ 14?
- 7. разница между значениями дат
- 8. Разница между возвращаемыми значениями alloc_pages() и get_free_pages()
- 9. Разница между модулями и экзистенциальными значениями
- 10. Разница между значениями GiST и GIN
- 11. разница между значениями DatetimeIndex и Timestamp колонком
- 12. разница между значениями шестнадцатеричных и нормальными типами
- 13. Разница между двумя строковыми значениями и теперь
- 14. Разница между передаваемыми значениями и ссылкой
- 15. Какой разница между значениями полукокса и символами
- 16. Разница между различными значениями kIOPMAssertionType
- 17. C++ Разница между двумя значениями
- 18. Разница между значениями в массиве php
- 19. Есть ли разница между значениями маржи?
- 20. разница во времени между двумя аналогичными значениями
- 21. Разница между двумя значениями в списке кортежей
- 22. Разница между двумя значениями временной метки SQL
- 23. mysql join, где разница между значениями минимальна?
- 24. разница высчитывает между двумя двойными значениями точно
- 25. Разница между значениями LOCAL_CERTIFICATE в Android.mk
- 26. Разница между значениями в двух запросах SQL
- 27. разница между значениями нескольких строк в SQL
- 28. Perl: Разница между двумя значениями индекса массива
- 29. разница между 3 значениями 2 таблицы
- 30. Разница между значениями 2 фунта (фунт)
http://stackoverflow.com/questions/16327483/whats-the-difference-between-a-boolean-literal-and-a-boolean-value – Josay