Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Когда-то давно тип данных int был привязан к размеру регистра машины, являвшейся целью компилятора. Так, например, компилятор для 16-разрядной системы использовал бы 16-разрядное целое число.
Однако мы к счастью не видим много 16-разрядное больше, и когда 64-разрядный начал добираться, популярные люди были более обеспокоены созданием, это совместимый с более старым программным обеспечением и 32-разрядный было вокруг такого длинного, что для большинства компиляторов интервал , как просто предполагается, составляет 32 бита.
Интервал байтов может содержать, зависит от того, что Вы скомпилировали его для, поэтому при компиляции программы для процессоров на 32 бита он содержит числа от 2^32/2 до-2^32/2+1, в то время как скомпилировано для 64 битов, которые он может содержать от 2^64/2 до-2^64/2+1. int32 будет всегда содержать 2^32 значения.
Редактирование : Проигнорируйте мой ответ, я не видел C#. Мой ответ был предназначен для C и C++. Я никогда не использовал C#