NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Имя user32.dll
вводит в заблуждение. Это 64-битная версия user32.dll
, которую вы называете. 64-битная версия находится по адресу %windir%\System32\user32.dll
.
32-разрядная версия включена для совместимости с 32-разрядными приложениями. Он расположен в %windir%\SysWOW64\user32.dll
. Вы можете проверить их с помощью утилиты dumpbin
:
System32 \ user32.dll:
FILE HEADER VALUES
8664 machine (x64)
SysWOW64 \ user32.dll:
FILE HEADER VALUES
14C machine (x86)
Там нет user64.dll по той же причине, что вы только что описали, программа .net может не зависеть от архитектуры процессора, поэтому тот же код должен работать на x86 и x64. Если вы перенесете свою программу на платформу x86, она все равно будет работать без каких-либо изменений.
Я предполагаю, что когда они назвали user32.dll, они не имели в виду эти сценарии.
signed
и unsigned
типы, которые могут привести к тихим и неожиданным результатам. Существует not' t слишком много синтаксических ограничений между двумя, которые могут инициировать отказ компиляции (если Вы не передаете дополнительные флаги предупреждения компилятора). Преимущество unsigned
тип является главным образом семантическим, если you' ре конкретно с помощью неподписанного типа для предотвращения управления знаковым битом (например, в битовой маске).
– Stephen
15 July 2010 в 22:51
signed
и unsigned
типы, которые могут привести к тихим и неожиданным результатам. Существует not' t слишком много синтаксических ограничений между двумя, которые могут инициировать отказ компиляции (если Вы не передаете дополнительные флаги предупреждения компилятора). Преимущество unsigned
тип является главным образом семантическим, если you' ре конкретно с помощью неподписанного типа для предотвращения управления знаковым битом (например, в битовой маске).
– Stephen
15 July 2010 в 22:51
signed
и unsigned
типы, которые могут привести к тихим и неожиданным результатам. Существует not' t слишком много синтаксических ограничений между двумя, которые могут инициировать отказ компиляции (если Вы не передаете дополнительные флаги предупреждения компилятора). Преимущество unsigned
тип является главным образом семантическим, если you' ре конкретно с помощью неподписанного типа для предотвращения управления знаковым битом (например, в битовой маске).
– Stephen
15 July 2010 в 22:51
signed
и unsigned
типы, которые могут привести к тихим и неожиданным результатам. Существует not' t слишком много синтаксических ограничений между двумя, которые могут инициировать отказ компиляции (если Вы не передаете дополнительные флаги предупреждения компилятора). Преимущество unsigned
тип является главным образом семантическим, если you' ре конкретно с помощью неподписанного типа для предотвращения управления знаковым битом (например, в битовой маске).
– Stephen
15 July 2010 в 22:51
signed
и unsigned
типы, которые могут привести к тихим и неожиданным результатам. Существует not' t слишком много синтаксических ограничений между двумя, которые могут инициировать отказ компиляции (если Вы не передаете дополнительные флаги предупреждения компилятора). Преимущество unsigned
тип является главным образом семантическим, если you' ре конкретно с помощью неподписанного типа для предотвращения управления знаковым битом (например, в битовой маске).
– Stephen
15 July 2010 в 22:51