Хорошим местом для начала является JavaDocs . Они охватывают это:
Брошено, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
- Вызов метода экземпляра нулевого объекта.
- Доступ или изменение поля нулевого объекта.
- Выполнение длины null, как если бы это был массив.
- Доступ или изменение слотов с нулевым значением, как если бы это был массив.
- Бросать нуль, как если бы это было значение Throwable.
Приложения должны бросать экземпляры этого класса для указания других незаконных видов использования нулевого объекта.
blockquote>Также, если вы попытаетесь использовать нулевую ссылку с
synchronized
, который также выдаст это исключение, за JLS :SynchronizedStatement: synchronized ( Expression ) Block
blockquote>
- В противном случае, если значение выражения равно null,
NullPointerException
.Как это исправить?
Итак, у вас есть
NullPointerException
. Как вы это исправите? Возьмем простой пример, который выдаетNullPointerException
:public class Printer { private String name; public void setName(String name) { this.name = name; } public void print() { printString(name); } private void printString(String s) { System.out.println(s + " (" + s.length() + ")"); } public static void main(String[] args) { Printer printer = new Printer(); printer.print(); } }
Идентифицирует нулевые значения
. Первый шаг - точно определить , значения которого вызывают исключение . Для этого нам нужно выполнить некоторую отладку. Важно научиться читать stacktrace . Это покажет вам, где было выбрано исключение:
Exception in thread "main" java.lang.NullPointerException at Printer.printString(Printer.java:13) at Printer.print(Printer.java:9) at Printer.main(Printer.java:19)
Здесь мы видим, что исключение выбрано в строке 13 (в методе
printString
). Посмотрите на строку и проверьте, какие значения равны нулю, добавив протоколирующие операторы или используя отладчик . Мы обнаруживаем, чтоs
имеет значение null, а вызов методаlength
на него вызывает исключение. Мы видим, что программа перестает бросать исключение, когдаs.length()
удаляется из метода.Трассировка, где эти значения взяты из
Затем проверьте, откуда это значение. Следуя вызовам метода, мы видим, что
s
передается сprintString(name)
в методеprint()
, аthis.name
- null.Трассировка, где эти значения должны быть установлены
Где установлен
this.name
? В методеsetName(String)
. С некоторой дополнительной отладкой мы видим, что этот метод вообще не вызывается. Если этот метод был вызван, обязательно проверьте порядок , что эти методы вызывают, а метод set не будет называться после методом печати. Этого достаточно, чтобы дать нам решение: добавить вызов
printer.setName()
перед вызовомprinter.print()
.Другие исправления
Переменная может иметь значение по умолчанию (и
setName
может помешать ему установить значение null):private String name = "";
Либо метод
printString
может проверить значение null например:printString((name == null) ? "" : name);
Или вы можете создать класс, чтобы
name
всегда имел ненулевое значение :public class Printer { private final String name; public Printer(String name) { this.name = Objects.requireNonNull(name); } public void print() { printString(name); } private void printString(String s) { System.out.println(s + " (" + s.length() + ")"); } public static void main(String[] args) { Printer printer = new Printer("123"); printer.print(); } }
См. также:
Я все еще не могу найти проблему
Если вы попытались отладить проблему и до сих пор не имеете решения, вы можете отправить вопрос для получения дополнительной справки, но не забудьте включить то, что вы пробовали до сих пор. Как минимум, включите stacktrace в вопрос и отметьте важные номера строк в коде. Также попробуйте сначала упростить код (см. SSCCE ).
Ctrl + - и противоположное Ctrl + Сдвиг + - .
Кладут обратно курсор (или вперед) к последнему месту, которым это было. Больше прокрутки назад или PgUp / PgDown для обнаружения, где Вы были.
Это переключает открытые окна в Visual Studio:
Ctrl + вкладка и противоположное Ctrl + Сдвиг + вкладка
Разверните Умный Тег (Меню Твердости): Ctrl + . (период)
Разворачивает тег, который показывает, когда Вы делаете вещам нравится, переименовывают идентификатор.
Возрастающий Поиск - Ctrl + я
Это - в основном диалоговое окно находки без диалогового окна. Только начните вводить то, что Вы хотите искать (посмотрите на нижнее местоположение строки состояния для наблюдения то, что Вы ввели). При нажатии Ctrl + я снова или F3 ищем следующий экземпляр. Нажмите Escape для выхода. При запуске нового поиска путем нажатия Ctrl + я дважды повторяю последний поиск.
Для меня это не имеет отношения об автоматическом коде завершения, соответствие круглой скобке или показ некоторой необычной панели инструмента. Вместо этого это примерно разрешение мне видеть код.
Со всеми панелями, окружающими Вас, область, Вы используете, чтобы на самом деле записать, что код становится слишком маленьким.
В этом случается, Сдвиг + Высокий звук + Входят входит к спасению и получает окно кода в фокусе в полноэкранный режим. Поразите его снова, и у Вас есть все панели назад.
Ctrl + Высокий звук + P -> Присоединение для обработки
Если 'Фаворит' измеряется тем, как часто я использую его, то:
F10 : Отладка. StepOver
:)
Ctrl + F10
, выполненный к курсору при отладке. Разыскиваемый это целую вечность, прежде чем я нашел сочетание клавиш...
Тот, который должны поднять другие редакторы: Ctrl + C с ничто не выбрало , скопирует текущую строку.
Большинство других редакторов ничего не сделает. После копирования строки вставка поместит строку перед текущей, , даже если Вы будете посреди строки . Большинство других редакторов начнет вставлять от того, где Вы, который является почти никогда, что Вы хотите.
Дублирование строки справедливо: Держите Ctrl, нажмите c, тогда v. ( Ctrl + C , Ctrl + V )
CTRL + F5 (Запускаются, Не Отлаживая)
CTRL + SHIFT + B (Решение для Сборки)
Открытый и набор фокусируются в Проводник Решения : Ctrl + Высокий звук + L
Ctrl + M , O . Может свернуть и развернуть все разделы кода в конкретном файле.
Высокий звук + Сдвиг +arrow ключи ( ← , ↑ , ↓ , → )
Это позволяет Вам выбирать вещи в блоке. Как Вы мог выбрать весь "интервал" в блоке и затем искать и заменить для удвоения, например.
**int** x = 1;
**int** y = 2;
**int** z = 3;
Visual Studio 2005/2008 плакаты привязки клавиш:
Они не покрывают настройки, но они - хорошие ссылочные материалы и определенно полезный для нахождения новых ярлыков.
кроме того, макрос, который выводит всю текущую привязку к файлу HTML:
Мой фаворит: F12 (переходят к определению) и Смещаются + F12 (найдите ссылки).
последний полезен с F8 (перейдите к следующему результату).
Ctrl + - и Ctrl + Сдвиг + - отображаются на спине моей мыши и вперед кнопках.
Ctrl + . полезен также, специально для добавления обработчиков событий и "использования" операторов.
Смещаются + ESC
, Это скрывается/закрывает любое 'поддельное окно' окна в Visual Studio. Это включает вещи как Проводник Решения, Обозреватель объектов, Окно вывода, окно Immediate, Windows Модульного теста и т.д. и т.д. и все еще применяется, прикрепляются ли они, плавание, прикрепляемое или с вкладками.
Ярлык в окно (например, Ctrl + Высокий звук + L или Ctrl + Высокий звук + я ) делает то, что необходимо сделать, и Сдвиг + Esc для избавлений от него. Если Вы не избавляетесь от него, единственный способ дать его, фокус снова должен использовать то же сочетание клавиш (или мышь, которая является тем, чего мы стараемся избегать....)
, Как только Вы приобретаете навык его, это очень полезно.
<час>Grrr.... Сумма времен хита Ctrl + F4 для закрытия 'окна' только, чтобы видеть, что мое текущее окно кода закрывается, был безумен, прежде чем я нашел это, теперь это только иногда происходит..
Тот, который я часто использую, но не многие другие люди, делает:
Сдвиг + Высокий звук + F10 тогда Вводит
, Если Вы введете в имени класса как Collection<string>
и не будете иметь надлежащего импорта пространства имен тогда, то эта комбинация ярлыка автоматически вставит импорт (в то время как каре сразу после'>').
Обновление:
эквивалентный ярлык от комментариев к этому ответу (спасибо астерит !):
Ctrl + .
, Намного более удобный, чем моя исходная рекомендация.
Мне нравится Ctrl + M , Ctrl + M . Расшириться/свернуть текущий блок кода.
Ctrl + Сдвиг + V вставляют / цикл через кольцо буфера обмена
Ctrl + C , Ctrl + V для дублирования текущей строки
Ctrl + L для удаления текущей строки
Ctrl + F3 для поиска текущего выбора
Ctrl + K , Ctrl + K для создания закладки (которые полезны)
Ctrl + K , Ctrl + N для движения в следующую закладку
И, вот является чем-то еще более интересным:
Нажатие Ctrl + / для помещения курсора в поле, где можно ввести команды.
, Например, Нажимая Ctrl + / и тип">", теперь начинают вводить имя файла в Вашем проекте, и это автоматически заполнит. Это - очень быстрый способ открыть файлы в текущем решении.
Ctrl + K , Ctrl + D //Авто (Ре) Формат
Видят Также: Ответ
Ctrl + Пространство , Visual Studio дает возможные завершения.
Ctrl + Сдвиг + F
, Старый добрый , Находят В Файлах .
Ctrl + ] для соответствия фигурным скобкам и круглым скобкам.
Ctrl + Сдвиг + ] выбирает код между парными скобками.
ВКЛАДКА ключ для "отрывков".
, Например, тип try
и затем хит клавиша Tab дважды.
Результаты в:
try
{
}
catch (Exception)
{
throw;
}
, который можно тогда развернуть.
Полный список Отрывков C#: http://msdn.microsoft.com/en-us/library/vstudio/z41h7fat.aspx
Visual Studio запаса? F12 - Редактирование. GoToDefinition.
Наличие DevExpress Осуществляют рефакторинг! установленный означает, что Ctrl + ' является моим небывалым фаворитом, хотя;)
Ctrl + K , Ctrl + C Комментарий блок
Ctrl + K , Ctrl + U Некомментарий блок
При использовании пара:
Вот список, который я часто использую:
Ctrl + I : для прогрессивного поиска. Если вы ничего не наберете после I и продолжите нажимать I (удерживая нажатой клавишу Ctrl ), он будет искать последний элемент, который вы искали. Ctrl + Shift + I обратный поиск. Вы также можете использовать F3 (и Shift + F3 ) после ввода некоторой строки поиска.
Ctrl + K Ctrl + C : Для комментирования выделенного региона. Если ничего не выделено, текущая строка будет прокомментирована. Естественно, вы можете просто удерживать Ctrl и последовательно нажимать K , C .
Ctrl + K Ctrl + U : для раскомментирования выделенной области. Работает, как указано выше.
Ctrl + / : переводит курсор в небольшое поле поиска вверху. Вы можете ввести "> имени файла" (без кавычек), чтобы открыть файл. Очень полезно, если ваш проект содержит несколько файлов.
Ctrl + K Ctrl + K : Помещает текущую строку в закладки. Это полезно, если вы хотите на мгновение взглянуть на какую-то другую часть кода и вернуться туда, где вы были.
Ctrl + K Ctrl + N : переход к следующей закладке, если их больше одной.
Ctrl + - : переводит курсор в его предыдущее положение
Ctrl + Shift + - : переводит курсор в его следующее положение ( если он существует)
Ctrl + Shift + B : создайте свой проект
Ctrl + C : Хотя это обычная копия, если ничего не выделено, копирует текущую строку. То же самое для Ctrl + X (для вырезания)
Ctrl + Пробел : автозаполнение с использованием IntelliSense
Ctrl + ]] : перенесет вас к соответствующей скобе. Работает со всеми видами скобок: '(', '{', ' ['. Полезно для больших блоков.
F12 : приведет вас к определению функции / определению переменной.
Alt + P + P : откроется вверх по свойствам проекта. Хотя не многие используют это, это полезно, если вы хотите быстро изменить аргументы командной строки для своей программы.
F5 : чтобы начать отладку
Shift + F5 : чтобы остановить отладку
Во время отладки вы можете использовать Ctrl + Alt + Q , чтобы добавить быстрое наблюдение. Другие ярлыки отладки можно найти в раскрывающемся меню отладки.
это полезно, если вы хотите быстро изменить аргументы командной строки для своей программы.F5 : чтобы начать отладку
Shift + F5 : чтобы остановить отладку
Пока отладки, вы можете использовать Ctrl + Alt + Q , чтобы добавить быстрое наблюдение. Другие ярлыки отладки можно найти в раскрывающемся меню отладки.
это полезно, если вы хотите быстро изменить аргументы командной строки для своей программы.F5 : чтобы начать отладку
Shift + F5 : чтобы остановить отладку
Пока отладки, вы можете использовать Ctrl + Alt + Q , чтобы добавить быстрое наблюдение. Другие ярлыки отладки можно найти в раскрывающемся меню отладки.
Не видел этого ...
Ctrl + Вверх
Ctrl + Вниз
Прокрутка окна без перемещения курсора.
Избранное слово: Ctrl + W
я не могу жить без того ярлыка. Используемый более чем 100 + (или 200 +) день.