Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Ну, если это имеет значение весь массивами PHP являются Ассоциативные массивы.
@EBGreen корректен.
, Который дает Вам некоторые интересные проблемы производительности, особенно при обработке массива как списка и использовании [] (массив добавляют), оператор. PHP, кажется, не кэширует самый большой числовой ключ и не добавляет тот к нему, вместо этого это, кажется, пересекает все ключи для нахождения, каков следующий числовой ключ должен быть. Я переписал сценарии в Python из-за мрачной array-as-a-list производительности PHP.
Ассоциативные массивы имеют стандарт dict/hash производительность наверху.
Это - все хэш-таблицы, согласно источникам на различных веб-форумах: http://www.usenet-forums.com/php-language/15348-zend-engine-array-implementation.html
, Если Вы хотите быть уверенными, считайте источник, затем скомпилируйте его, но удостоверьтесь, что Вы можете доверять своему компилятору (Предупреждение: PDF, и не связанный, но очень прохладный).
Это хеш-таблица. Объявление типа и функция хеширования находятся здесь:
http://svn.php.net/viewvc/php/php-src/trunk/Zend/zend_hash.h?view=markup
Есть легкий массив и связанный список в spl (стандартная библиотека php)